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

Que*_*e20 3 unsafe-pointers nserror ios swift

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

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

&error说错了:'NSError' is not convertible to '@lvalue inout $T9' in Swift.有谁知道这意味着什么?

先感谢您.

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

Ant*_*nio 5

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

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

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