条件中的变量绑定需要初始化程序/模式匹配,条件需要'case'关键字

时间:2016-05-02 19:22:19

标签: swift

有人可以帮我解决这个错误吗?我正在尝试为我的应用程序实现Facebook登录按钮。

if var FBSDKAccessToken.currentAccessToken() {
        fetchProfile()
    }
}

func fetchProfile() {
    print ("fetch profile")

    let parameters = ["fields": "email, first_name, last_name, picture.type(large)" ]
    FBSDKGraphRequest(graphPath: "me", parameters: parameters).startWithCompletionHandler { (connection, result, error) in

        if error != nil {
            print (error)
            return
        }

        if let email = result["email"] as? String {
            print (email)
        }

        print (result)
    }
}

2 个答案:

答案 0 :(得分:2)

if var FBSDKAccessToken.currentAccessToken()

没有任何意义。如果currentAccessToken()返回bool,则只能是

if FBSDKAccessToken.currentAccessToken()

否则如果它返回一个可选项,则可以是

if let token = FBSDKAccessToken.currentAccessToken()

if let _ = FBSDKAccessToken.currentAccessToken()

答案 1 :(得分:1)

我正在使用let foo as编写Switch语句,如下所示:

switch (vc) {
case let vc as SomeSubclass: ()
default: ()
}

我最终将其切换为if语句,但无意识地复制/粘贴了一些旧代码:

if let vc as SomeSubclass {

}

会产生错误:

条件中的模式匹配需要'case'关键字

if当然需要更改为普通的if-let形式:

if let vc = vc as? SomeSubclass {

}