我遇到了与此非常相似的问题one
基本上我使用 Parse.com 加载一些具有 PFUser 指针的对象,然后我还使用 includeKey 来包含这些 PFUsers,这是代码...
PFQuery *query = [PFQuery queryWithClassName:@"GameVillageObject"];
[query whereKey:@"region" equalTo:[NSNumber numberWithInt:region]];
[query includeKey:@"pfUser"];
query.limit = 100;
[sharedInstance requestSentWithDesc:@"Get all village objects in region"];
[query findObjectsInBackgroundWithBlock:^(NSArray *PUObjects, NSError *error) {
if (!error) {
// The find succeeded.
NSLog(@"Successfully retrieved %d village objects from server.", PUObjects.count);
if(PUObjects.count > 0)
{
villageObjects = PUObjects;
for (int i=0; i<[villageObjects count]; i++)
{
PFObject *villageItem = [villageObjects objectAtIndex:i];
PFUser *user = [villageItem objectForKey:@"pfUser"];
NSString *userName = [NSString stringWithFormat:@"%@",[user objectForKey:@"username"]];
NSLog(@"User name is: %@.", userName);
}
[self setupVillageList];
[sharedInstance centerImage:marketItemsContainer xChoice:YES yChoice:NO];
}
} else {
// Log details of the failure
NSLog(@"Getting village objects Error: %@ %@", error, [error userInfo]);
}
}];
现在由于某种原因,时不时地,可能十分之一,游戏崩溃,并出现此错误
键“用户名”没有数据。在获取其之前调用 fetchIfNeeded
价值。
虽然我无法判断当我尝试使用上面的“用户名”时它是否崩溃,或者稍后当我尝试使用“用户名”时它崩溃,但无论哪种方式,我不明白为什么大多数时候它没有问题,包括那些额外的对象,然后有几次却没有。有任何想法吗?
听起来好像关联user
未加载,但在大多数情况下可能会被缓存(因此可用)。我可以想到两种方法来解决这个问题。
1) Call fetchIfNeeded
正如错误消息所建议的:
PFQuery *query = [PFQuery queryWithClassName:@"GameVillageObject"];
[query whereKey:@"region" equalTo:[NSNumber numberWithInt:region]];
[query includeKey:@"pfUser"];
...
PFObject *villageItem = [villageObjects objectAtIndex:i];
PFUser *user = [villageItem objectForKey:@"pfUser"];
[user fetchIfNeeded];
NSString *userName = [NSString stringWithFormat:@"%@",[user objectForKey:@"username"]];
NSLog(@"User name is: %@.", userName);
2) 指定pfUser.username
in the includeKey:
call
[query whereKey:@"region" equalTo:[NSNumber numberWithInt:region]];
[query includeKey:@"pfUser.username"];
query.limit = 100;
...
这应该告诉 Parse 加载username
当执行查询时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)