在Swift中,'NSError'不能转换为'@lvalue inout $ T9'

时间:2014-09-05 19:49:36

标签: ios swift nserror unsafe-pointers

所以我试图在我的Swift iOS应用程序中的SLRequest对象上使用performRequestWithHandler块,我无法处理NSError对象。这就是我的代码的样子:

posts.performRequestWithHandler({(response:NSData!, urlResponse:NSHTTPURLResponse!, error:NSError!) in
    self.data = NSJSONSerialization.JSONObjectWithData(response, options: NSJSONReadingOptions.MutableLeaves, error: &error)
})

我在&error上说错误'NSError' is not convertible to '@lvalue inout $T9' in Swift。有谁知道这意味着什么?

提前谢谢。

(我正在使用Xcode Beta 6 v7和OS X 10.10)

1 个答案:

答案 0 :(得分:5)

您正在重复使用传入块的error变量 - 您只需定义一个本地可选变量并将其引用传递给JSONObjectWithData

var myError: NSError?
self.data = NSJSONSerialization.JSONObjectWithData(response, options:NSJSONReadingOptions.MutableLeaves, error: &myError)

这是因为JSONObjectWithData需要引用NSError类型的变量。传递给块的那个是不可变的 - 它指向NSError的实例,但不能重新分配指向另一个实例,或者在没有错误的情况下设置为nil。