Swift 可选类型的值';()?';未拆开
据我所知,下面代码中的可选故障块已经用Swift 可选类型的值';()?';未拆开,swift,unwrap,Swift,Unwrap,据我所知,下面代码中的可选故障块已经用?打开,但是xCode一直在抱怨我的语法。如果仔细观察success块,它看起来与failure块完全相同,但不知何故,xCode没有标记success块。我以前也遇到过这个问题,并通过一个干净的构建成功地解决了这个问题,但这次没有。有没有人遇到过类似的问题 public func authorizeLogin(token: String, success: (() -> ())?, failure: (() -> ())?) {
?
打开,但是xCode一直在抱怨我的语法。如果仔细观察success
块,它看起来与failure
块完全相同,但不知何故,xCode没有标记success
块。我以前也遇到过这个问题,并通过一个干净的构建成功地解决了这个问题,但这次没有。有没有人遇到过类似的问题
public func authorizeLogin(token: String, success: (() -> ())?, failure: (() -> ())?) {
let path = "me/two-step/push-authentication"
let requestUrl = self.pathForEndpoint(path, withVersion: ServiceRemoteRESTApiVersion_1_1)
let parameters = [
"action" : "authorize_login",
"push_token" : token
]
api.POST(requestUrl,
parameters: parameters,
success: { (operation: AFHTTPRequestOperation!, response: AnyObject!) -> Void in
success?()
},
failure:{ (operation: AFHTTPRequestOperation!, error: NSError!) -> Void in
failure?()
})
}
以下是带有错误消息的屏幕截图:
value of optional type '()?' not unwrapped; did you mean to use '!' or '?'
您的代码中有些东西看起来很可疑……您的
失败
关闭和成功
关闭似乎都在试图自称。例如:
success: { (operation: AFHTTPRequestOperation!, response: AnyObject!) -> Void in
success?() // <- This appears to be trying to call
// the parameter itself
}
它给出了错误error:在其自身初始值内使用的变量
我认为您得到的错误消息具有误导性,您需要做的是为
成功
和失败
参数编写闭包,这些参数不调用它们自己。看起来像是编译器问题(可能是缓存)。报告的类型不正确,它应该是(()->())?
,而不仅仅是()?
。编译器似乎认为failure
是一个Void
有办法清理缓存吗?你可以删除xcode的缓存文件夹,它位于~/Library/Caches/xcode/…,你应该可以在上面找到它。我刚刚尝试了clean
,clean build folder
,并删除了所有~/Library/Developer/Xcode/DerivedData/
,但问题仍然存在。请尝试删除~/Library/Caches/com.apple.dt.Xcode
let add: () -> () = { add() }