我有代码我一直在使用SwiftyJSON,我试图更新到Swift 3使用XCode 8.0 Beta 3.我遇到了一个问题,其中编译器不喜欢参数的错误:& err'像以前一样。我一直在寻找如何正确传递一个NSErrorPointer,但是我发现的所有东西都说要重写,忽略错误并抛出一个错误。由于这不是我的代码,我宁愿保留原样。那么使用NSErrorPointer的正确新方法是什么?Swift 3更改为NSErrorPointer?
var err : NSError?
// code to get jsonData from file
let json = JSON(data: jsonData, options: JSONSerialization.ReadingOptions.allowFragments, error: &err)
if err != nil {
// do something with the error
} else {
return json
}
上述结果在编译器错误代码:“&”只能立即出现在呼叫参数列表。我试图创建一个NSErrorPointer,所以我可以使用它,但我找不到任何关于如何初始化一个(类型别名声明是不够的)。我已经去过Using Swift with Cocoa and Obj-C,它没有包含单词NSErrorPointer,而是翻过了抛出错误的新方法。我也看过几十个帖子,全部使用& err,所以显然这是Swift 3的新功能。
有没有人有解决这个问题?使用NSErrorPointer的答案是什么?
谢谢, 麦克
非常感谢答案中的细节。看起来像SwiftyJSON重复了SE-0055中所做的工作,这些工作是通过更改类型别名完成的。 – Mikey