2014-09-12 108 views
0

我有一個Parse.com雲端函數,它返回一個PFObject。在某些情況下,我需要發回PFObject中不存在的密鑰值。那可能嗎?將一個新屬性設置爲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,但它沒有幫助。

有沒有解決方案,沒有進入數據存儲類和創建虛擬列?

回答

-1

這是通過設置正確的ACL完成的。必須爲用戶設置ACL才能讀取和寫入。然後你可以添加新的列。在可可,它看起來是這樣的:

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

你是指適當的班級嗎?我不希望用戶寫信給它,而且無論如何都是在服務器(雲)上完成的。你的意思是我應該使用主密鑰來做到這一點? – Eddy 2014-09-12 17:25:09

+0

如果要存儲某個類的PFObject,其中包含該類中尚不可用的密鑰,則必須將writeAccess設置爲true,以使其發送給它的任何實例。在我上面的代碼示例中,它將是當前用戶。但我認爲你也可以用萬能鑰匙做到這一點。 – freshking 2014-09-12 17:28:17

+0

這不起作用。 – Eddy 2014-09-12 18:37:02

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似乎不會允許它。奇怪的。

相關問題