私はこれと非常によく似た問題を抱えています
基本的に、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]);
}
}];
何らかの理由で、10 回に 1 回、ゲームがクラッシュし、このエラーが発生することがあります。
キー「username」にはデータがありません。値を取得する前に fetchIfNeeded を呼び出します。
上記の「ユーザー名」を使用しようとするとクラッシュするのか、それとも少し後で「ユーザー名」を使用しようとするとクラッシュするのかわかりませんが、どちらの方法でも、ほとんどの場合問題がない理由がわかりませんそれらの余分なオブジェクトと、そうでない場合が数回あります。何か案は?