将新属性设置为PFObject

时间:2014-09-12 17:12:50

标签: javascript ios parse-platform

我有一个发送回PFObject的Parse.com云功能。在某些情况下,我需要发回PFObject中不存在的密钥的值。那可能吗?

这就是我的尝试:

var test = prodAndTitles["products"][0];
test["XOXO"] = "kisses";
prodAndTitles["products"][0] = test;
console.log("XOXO = " + prodAndTitles["products"][0]["XOXO"]);

按预期打印出kisses

但是当我尝试获取XOXO密钥时,回到应用程序中它不存在:

NSLog(@"The product's XOXO %@", [self.product objectForKey:@"XOXO"]);

打印出null

我也尝试将产品类型从PFObject更改为id,但它没有帮助。

是否有解决方案,无需进入数据存储类并创建虚拟列?

2 个答案:

答案 0 :(得分:0)

以下是我遇到的问题的完整答案:

问题是上述符号都不适用于来自数据存储区的Parse.com骨干javascript对象。这是有效的符号:

testObject.set('TestProp', 'TestValue');

但这仍然只是解决方案的一部分。尝试将具有新设置属性的testObject发送到客户端ios应用程序时,会导致错误:

Uncaught Tried to save an object with a pointer to a new, unsaved object.

解决方法是在设置属性后保存testObject

testObject.save();

这实际上没有意义,因为我本来希望向testObject添加属性而不是将它们保存到数据存储区 - 而且这是浪费数据库调用 - 但看起来像Parse赢了不允许。奇怪的。

答案 1 :(得分:-1)

这是通过设置正确的ACL来完成的。必须设置ACL才能使用户能够读写。然后,您可以添加新列。在Cocoa中它看起来像这样:

PFACL *acl = [PFACL ACL];
[acl setReadAccess:YES forUser:[PFUser currentUser]];
[acl setWriteAccess:YES forUser:[PFUser currentUser]];
[test setACL:acl];