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() }