不能在PFObject上使用nil作为键或值。将NSNull用于值

时间:2016-02-24 20:41:01

标签: ios swift parse-platform swift2

当我尝试将Parse objectId保存为User类的指针值时出现以下错误:Can't use nil for keys or values on PFObject. Use NSNull for values.

我有一个显示头像列表的UICollectionView(Parse中的头像类)。当用户在列表中选择头像时,我想使用指针值将该用户的头像设置为所选图像。

    override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
        print(self.avatars[indexPath.row])

        self.user["avatar"] = self.avatars[indexPath.row]["objectId"]

        self.performSegueWithIdentifier("returnToProfile", sender: user)
    }

}

用户具有指向Avatar类的指针列。试图让Avatar objectId放入User表的列中,但我不断收到错误。奇怪的是print(self.avatars[indexPath.row])返回以下内容:

<Avatar: 0x7f8ebb835c80, objectId: WG7L0KpdJ2, localId: (null)> {
    file = "<PFFile: 0x7f8ebb837dc0>";
    name = man;
}

objectId存在,但是如果我尝试使用print(self.avatars[indexPath.row]["objectId")进行打印,我会得到nil。

我做错了什么?

谢谢!

编辑:更新的代码:

let user = PFUser.currentUser()

user!["avatar"] = self.avatars[indexPath.row].objectId

do {
   print(self.avatars[indexPath.row].objectId)
   try user?.save()
} catch {
    print(error)
}

print语句打印正确的objectId。但是,将其保存给用户会导致错误invalid type for key avatar, expected *Avatar, but got string" UserInfo={code=111, temporary=0, error

编辑2:指针不保存objectId。您必须保存整个对象。刚想通了。这是现在有效的更新代码。感谢大家的帮助!!

override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {

        self.user["avatar"] = self.avatars[indexPath.row]

        do {
           try self.user.save()
        } catch {
            print(error)
        }

        self.performSegueWithIdentifier("returnToProfile", sender: user)
    }

}

1 个答案:

答案 0 :(得分:1)

要访问ID:self.user["avatar"] = self.avatars[indexPath.row].objectId

在这种情况下,objectId是对象的属性,而不是其中一个字典的下标值。