Xcode 7.0 Swift 更新问题

Posted

技术标签:

【中文标题】Xcode 7.0 Swift 更新问题【英文标题】:Xcode 7.0 Swift Update Problems 【发布时间】:2015-06-09 19:36:11 【问题描述】:

我正在尝试更新我的项目以使用 Xcode 7.0,并且在更新我的 Swift 项目后,我在这一行遇到了一个我不理解的错误。

let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers ) as! NSDictionary

错误是

“调用可以抛出,但是没有标记‘try’,错误没有处理”

我的项目文件中也出现这两个错误...

“链接器命令失败,退出代码为 1(使用 -v 查看调用)”

“错误:无法解析“/Users/MattFiler/Library/Developer/Xcode/DerivedData/ePlanner-cqwzlxqgpwaloubjgnzdlomjkfea/Build/Intermediates/SwiftMigration/ePlanner/Products/Debug-iphonesimulator/ePlannerTests.xctest 的调试图/ePlannerTests": 没有这样的文件或目录"

【问题讨论】:

【参考方案1】:

试试这个代码:

do 
    let jsonData = try NSJSONSerialization.JSONObjectWithData(urlData!, options: .MutableContainers ) as! NSDictionary
    // Use jsonData here
 catch 
    print("Well something happened: \(error)")

你需要 try 关键字,因为 NSJSONSerialization.JSONObjectWithData 现在会在 Swift 2 之后发生故障时抛出错误。抛出函数需要用 trytry! 标记。

您还需要do ... catch 来捕获可能发生的任何错误。这将捕获错误并进行处理。

您可能需要阅读changes in Swift 2 以了解发生这种情况的原因。 WWDC 视频也会很有帮助。

【讨论】:

有帮助,谢谢。我不知道他们为什么要更新语言,这对像我这样的学习者来说很烦人。 @MattFiler 如果它解决了您的问题,请不要忘记接受答案,如果它超出您的预期,请点赞 已经搞定了,谢谢!我还在我的项目中使用 UIWebView,现在在 Xcode 更新后出现“NSURLSession/NSURLConnection HTTP 加载失败(kCFStreamErrorDomainSSL,-9802)”错误。你知道是什么原因造成的吗?它以前工作得非常好,但现在它不会加载我的网页。 @MattFiler 不,不知道。似乎与 SSL 相关。搜索错误域 (kCFStreamErrorDomainSSL) 和错误代码 (9802)。如果找不到,请提出新问题。 谢谢。搜索后似乎有几个人遇到了同样的问题,这个为我解决了它:***.com/questions/30720813/…【参考方案2】:

如果它抛出错误,你需要尝试并捕获。

do 
    let jsonData:NSDictionary = try NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers ) as! NSDictionary
    //...

catch 

【讨论】:

我之前尝试过,但后来在代码中我收到错误消息,当我尝试调用“jsonData”时,该变量是“未解析的标识符”。 你在do块内使用了jsonData吗?

以上是关于Xcode 7.0 Swift 更新问题的主要内容,如果未能解决你的问题,请参考以下文章

将 Xcode 更新到 7.0 后出现错误

Xcode 7 和基于 swift 的框架

将 Xcode 6.4 更新到 Xcode 7.0 后,NSData dataWithContentsOfURL 为空

设备不会运行错误 iOS 9 Xcode 7.0

XCode 7.0b5:启动图像

iPhone 从 Xcode 版本 7.0 (7A220) 不可用