0

从昨天开始我就一直在敲我的头。我从 facebook 获取个人资料图片并希望将其保存以进行解析。但我被困住了。我尝试了这个解决方案

如何在 Swift 中更新 Parse 用户信息?

那并没有解决我的问题。

使用 Swift IOS8 在 Parse.com 中更新用户

我不认为是这种情况,因为我刚刚登录。我的观点也发生了变化。

这是我的代码。

func updateCurrentUserProfilePicture(image: UIImage) {
        let currentUser = PFUser.currentUser()
        let id = currentUser?.objectId
        let data = UIImagePNGRepresentation(image)
        var query = PFUser.query()

        query!.getObjectInBackgroundWithId(id!) {
            (user: PFObject?, error: NSError?) -> Void in
            if error != nil {
                print(error)
            } else if let usr = user {
                // usr.setObject(data!, forKey: "image")
                usr["image"] = data!
                usr.saveInBackgroundWithBlock({ (result: Bool, error: NSError?) in
                    if error == nil {
                            self.delegate?.didUpdateProfilePictureWithResult!(true, error: error)
                    }else {
                        self.delegate?.didUpdateProfilePictureWithResult!(false, error: error)
                    }

                })
            }
        }
    }

我可以看到didUpdateProfilePictureWithResult委托被成功调用。但是当我去 back4app.com 时,我可以看到user行但看不到image列。而且我也没有看到任何错误。

我在这里想念什么?

更新 我试图保存在控制台中。它保存没有任何错误。

**expression do { try usr.save()} catch { print(error)}**
2016-06-10 17:29:32.264 GeofenceMe2[39334:91037] Warning: A long-running operation is being executed on the main thread. 
 Break on warnBlockingOperationOnMainThread() to debug.
NilError

但我的仪表板中仍然没有图像列

4

1 回答 1

1

您无法保存NSData以进行解析。在此处检查有效的数据类型:https ://parse.com/docs/ios/guide#objects-data-types 。

您正在使用相同的用户对象查询用户对象。您可以只使用 PFUser.currentUser()。

func updateCurrentUserProfilePicture(image: UIImage) {
    let avatar = PFFile(name: PFUser.currentUser()!.username, data: UIImagePNGRepresentation(image)!)
    PFUser.currentUser()!.setObject(avatar!, forKey: "avatar")
    PFUser.currentUser()!.saveInBackgroundWithBlock { (success: Bool, error: NSError?) in

    }
}
于 2016-06-10T13:49:55.310 回答