我的 PFUser “firstName”和“lastName”上有两个额外的列。他们正在妥善保存;我可以在数据浏览器中看到数据。
我有另一个 PFObject“类”,它有一个 NSArray 的 PFUsers 属性。我在 PFObject 上使用类方法+fetchAllIfNeededInBackground:block:来获取 PFUsers 数组。在回调块中,我在数组中的每个 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.'
编辑:访问传递给+fetchAllIfNeededInBackground的块回调的 fetchedObjects 数组不会抛出,但访问最初传递给+fetchAllIfNeededInBackground的实际数组会抛出。
在调用解决问题之前调用 fetchIfNeeded,但为什么呢?数据已经存在。我是否错过了+fetchAllIfNeededInBackground的理解,因为它没有更新拥有 PFUser 集合的 PFObject?