我知道这个问题已经被问了很多,但是没有一个解决方案适合我的场景。我正在尝试将对象添加到当前用户的关系中。请注意,将对象添加到关系中没有问题,除非具有 PFRelation 的对象是 PFUser。
以下工作正常:
let testChild: PFObject = PFObject(className: "TestChild")
testChild["name"] = "test"
testChild.saveInBackgroundWithBlock { (success, error) -> Void in
let testParentQuery: PFQuery = PFQuery(className: "TestParent")
testParentQuery.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in
let testParent: PFObject = (objects?.first)!
let testRelation: PFRelation = testParent.relationForKey("children")
testRelation.addObject(testChild);
testParent.saveInBackground()
})
}
但这不起作用:
let testChild2: PFObject = PFObject(className: "TestChild")
testChild2["name"] = "test"
testChild2.saveInBackgroundWithBlock { (success, error) -> Void in
let testRelation: PFRelation = (PFUser.currentUser()?.relationForKey("testRelation"))!
testRelation.addObject(testChild2)
PFUser.currentUser()?.saveInBackground()
}
我检查/双重检查PFUser.currentUser()
返回一个有效值,testRelation 存在一个正确的名称,类型等。TestChild 对象保存得很好,它PFUser.currentUser()?.saveInBackground()
记录了错误
“ can't add a non-pointer to a relationship (Code: 111, Version: 1.10.0) ” 好像我试图为关系设置一个字符串或其他东西,尽管我显然不是。此外,我在用户(如字符串)上设置/保存非关系字段没有问题。我将 PFUser 和我试图添加到关系中的对象子类化,但试图缩小问题范围,我完全尝试了上面的代码并在代码中只使用 PFUser 和 PFObject。
我究竟做错了什么?请帮忙,我已经坚持了几个小时了,我只是无法理解发生了什么。