Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.4k views
in Technique[技术] by (71.8m points)

ios - Cannot convert value of type 'UInt' to expected argument type 'UnsafeMutablePointer<UInt>'

I am trying to initialize a String from the content accessible by a URL:

actualresponse.response = String(contentsOfURL: url, usedEncoding: NSUTF8StringEncoding)

I get the following error thrown, pointing at the usedEncoding:

Cannot convert value of type 'UInt' to expected argument type 'UnsafeMutablePointer'

Can anyone tell me why this error is thrown and how I can fix it?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

There are two similar but different methods which can be mistaken.

  • The usual method is

    init(contentsOfURL url: NSURL,
        encoding enc: UInt) throws
    

    The encoding parameter takes an NSStringEncoding value to specify the encoding, for example

    let string = try? String(contentsOfURL:url, encoding:NSUTF8StringEncoding)
    

  • The second method retrieves the encoding from the file by passing a pointer as usedEncoding parameter

    init(contentsOfURL url: NSURL,
        usedEncoding enc: UnsafeMutablePointer<UInt>) throws
    

    The documentation says:

    Upon return, if url is read successfully, contains the encoding used to interpret the data.

    That means you have to pass a pointer which will contain the determined encoding of the file.

    var encoding : NSStringEncoding = 0
    let string = try? String(contentsOfURL:url, usedEncoding:&encoding)
    

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...