从Parse iOS检索对象

时间:2014-12-01 00:30:43

标签: ios parse-platform

我是编程新手,正在尝试使用Swift开发iOS应用。但是,我遇到了一个问题,试图从Parse中检索以前保存的信息,以便在我的应用程序中使用。

要保存信息,请使用以下代码:

    var user = PFUser.currentUser()

    var number = self.phoneNumber.text as String
    var insta = self.instagramUsername.text as String
    var snapp = self.snapchatName.text as String
    var twitter = self.twitterHandle.text as String
    var bio = self.profileBio.text as String

    var socialData = PFObject(className: "socialData")

    socialData["phoneNumber"] = number
    socialData["instagram"] = insta
    socialData["snapchat"] = snapp
    socialData["twitter"] = twitter
    socialData["bio"] = bio
    socialData["user"] = user

    socialData.save()

这正确地保存了关于Parse的信息,但是当我尝试检索Instagram名称或其他任何具体使用查询时,我收到错误。以下是我一直试图检索它的方法:

    var user = PFUser.currentUser()

    var query = PFQuery(className:"socialData")
    query.whereKey("user", equalTo: user)
    query.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]!, error: NSError!) -> Void in
        if error == nil {
            // The find succeeded.

            // Do something with the found objects

            var socialData = PFObject(className: "socialData")


            let instaUsername = socialData["instagram"] as String

            println(instaUsername)


        } else {
            // Log details of the failure
            NSLog("Error: %@ %@", error, error.userInfo!)
        }
    }

日志显示致命错误:在展开Optional值时意外发现nil。应用程序崩溃后。然而,信息正确地显示在Parse上。非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:3)

完全删除findObjectsInBackgroundWithBlock块中的这一行:

var socialData = PFObject(className: "socialData")

并替换此行:

let instaUsername = socialData["instagram"] as String

用这个:

let instaUsername = objects[0]["instagram"] as String

因此您实际上正在利用从查询中检索到的对象数组,访问与当前用户匹配的第一个对象,然后获取" instagram"密钥从该PFObject字典中存储的值。