PFUser没有打开 - 快速

时间:2015-06-22 19:51:46

标签: ios xcode swift

我开始学习swift with parse,我遇到了这个错误:

“可选类型'PFUser的值?'没打开;你的意思是用'!'或'?'

我似乎无法让它发挥作用......

        PFFacebookUtils.logInWithPermissions(["public_profile",
        "user_about_me", "user_birthday"], block: {
            user, error in

            if user == nil {
                println("the user canceled fb login")
                //add uialert

                return

            }
                //new user
            else if user.isNew {
                println("user singed up through FB")

                //get information from fb then save to parse
                FBRequestConnection.startWithGraphPath("/me?fields=picture,first_name,birthday,gender",  completionHandler: {
                    connection, result, error in
                    //print results
                    println(result)
                    //result dictionary about user
                    var r = result as NSDictionary
                    //prnt dictionary
                    println(NSDictionary)
                    //match parse column with what fb sends
                    user["firstName"] = r["first_name"]
                    user["gender"] = r["gender"]
                    //r = result, then key into using picture.  Then key into url using the data
                 let pictureURL = ((r["picture"] as NSDictionary)["data"] as NSDictionary) ["url"] as String

2 个答案:

答案 0 :(得分:2)

而不是使用if user == nil {...,而应该使用

    if let user = user { 
       // Login succeeded...
    } 
    else { 
       // Login failed
    } 

变量user将在if let内展开,您可以按照相同的方式继续使用user

答案 1 :(得分:1)

以下是解释:What is an "unwrapped value" in Swift?

PFFacebookUtils.logInWithPermissions(["public_profile",
    "user_about_me", "user_birthday"], block: {
        user, error in

        if user == nil {
            println("the user canceled fb login")
            //add uialert

            return

        }
            //new user
        else if user!.isNew {
            println("user singed up through FB")

            //get information from fb then save to parse
            FBRequestConnection.startWithGraphPath("/me?fields=picture,first_name,birthday,gender",  completionHandler: {
                connection, result, error in
                //print results
                println(result)
                //result dictionary about user
                var r = result as NSDictionary
                //prnt dictionary
                println(NSDictionary)
                //match parse column with what fb sends
                user["firstName"] = r["first_name"]
                user["gender"] = r["gender"]
                //r = result, then key into using picture.  Then key into url using the data
             let pictureURL = ((r["picture"] as NSDictionary)["data"] as NSDictionary) ["url"] as String