我有一个发送回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
,但它没有帮助。
是否有解决方案,无需进入数据存储类并创建虚拟列?
答案 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];