我是编程新手,正在尝试使用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上。非常感谢任何帮助,谢谢!
答案 0 :(得分:3)
完全删除findObjectsInBackgroundWithBlock
块中的这一行:
var socialData = PFObject(className: "socialData")
并替换此行:
let instaUsername = socialData["instagram"] as String
用这个:
let instaUsername = objects[0]["instagram"] as String
因此您实际上正在利用从查询中检索到的对象数组,访问与当前用户匹配的第一个对象,然后获取" instagram"密钥从该PFObject字典中存储的值。