我在PFUser「firstName」和「lastName」上有兩個額外的列。他們正在妥善保存;我可以在數據瀏覽器中看到數據。PFUser在fetchAllIfNeeded調用objectForKey時拋出NSInternalInconsistencyException
我有另一個PFObject「類」,具有PFUsers的NSArray屬性。我使用PFObject上的類方法+ fetchAllIfNeededInBackground:block:來獲取PFUser的數組。在回調塊中,我在數組中的每個PFUser上調用objectForKey:,但是我通過擁有PFObject訪問它們。
// invited is the NSArray of PFUsers
self.whoCell.mainLabel.text = [[self.plan.invited objectAtIndex:0]
objectForKey:@"firstName"];
調試輸出這在objectForKey調用之前斷點右:
(lldb) po self.plan.invited
(NSArray *) $4 = 0x06e62a60 <__NSArrayM 0x6e62a60>(
<PFUser:GCCdPjCU2J> {
firstName = Fake;
lastName = Account;
username = yyajnbafv53qw4yhjm9sfoiis;
}
)
編輯:將實施self.plan.invited因爲上面有誤導之嫌。
- (NSArray*)invited
{
// self.dataSource is a PFObject*
return [self.dataSource objectForKey:INVITED_PROP];
}
然而,當上述調用它來objectForKey製成:此拋出異常:
'NSInternalInconsistencyException', reason: 'Key "firstName" has no data. Call fetchIfNeeded before getting its value.'
編輯:訪問傳遞到塊回調fetchedObjects陣列+ fetchAllIfNeededInBackground不會拋出,但訪問最初傳遞給+ fetchAllIfNeededInBackground的實際數組會拋出。
在調用解決問題之前調用fetchIfNeeded,但是爲什麼?數據已經存在。我錯過了解+ fetchAllIfNeededInBackground,因爲它沒有更新擁有收集PFUsers的PFObject?
很難說,因爲解析SDK不包括源和文檔不說關於使用fetchall什麼不是遞歸或傳遞。直接詢問Parse支持可能是一個很好的問題:新創業公司通常可以幫助你很快。 – ckhan 2012-04-23 05:33:52
@ckhan好主意。會做。 – squinlan 2012-04-23 05:36:11