Swift 2 字符串和 NSURL 错误

Posted

技术标签:

【中文标题】Swift 2 字符串和 NSURL 错误【英文标题】:Swift 2 String & NSURL Errors 【发布时间】:2015-11-11 08:03:19 【问题描述】:

更新到 Swift2 后,我收到一些我不明白的错误:

第一个错误:

 if(!parole1.text.isEmpty && !parole2.text.isEmpty && !parole3.text.isEmpty && isValidEmail(parole4.text))

... code
            

--> ERROR: *Value of optional type String? not unwrapped!*

第二个错误:

var dataString = "name="+name.text+"&name2="+Name2.text+"&parola="+parola.text+"&pwd="+pwd.text

--> ERROR: *Expression was too complex to be solved in reasonable time*

第三个错误:

let reply = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)

-->ERROR: *Extra argument 'error' in call*

【问题讨论】:

【参考方案1】:

第一个错误:

parole1.text 是可选的,必须用 ?或者 !在你可以调用 isEmpty 之前。

第二个错误:

我不知道为什么这对 swift 来说是个问题,但可以用这样的格式化字符串来解决:

var dataString = "name=\(name.text)&name2=\(Name2.text)&parola=\(parola.text)&pwd=\(pwd.text)"

但是,您可能还想用if let 或硬! 解压此处的文本

第三个错误:

NSURLConnection.sendSynchronousRequest 不再将错误作为参数。

do 
   let reply = try NSURLConnection.sendSynchronousRequest(request, returningResponse:&response)
 catch 


编辑:改用NSURLSessionNSURLConnection.sendSynchronousRequest 已弃用

【讨论】:

第二个错误几乎可以肯定是因为变量没有解包。我认为问题在于编译器在进行类型推断时遇到了麻烦。 NSURLConnection 在 ios9 之后被弃用。考虑转移到 NSURLSession。

以上是关于Swift 2 字符串和 NSURL 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中将 NSURL 转换为字符串

比较 NSURL 字符串和简单的 Swift 字符串

Swift 中的 NSURL 数组错误?

pathExtension 不可用:在 NSURL 上使用 pathExtension。斯威夫特 2.0

带空格的字符串无法转换为 NSURL - Mantle

无法使用类型为“(NSURL,*:NSString?)”的参数列表调用“*”