iOSアプリでparse.comを使用して、データを解析クラウドサービスに保存しています。ネストされたオブジェクトのクエリで問題が発生しました。私は次のデータモデルを持っています:
クラス「ゲーム」には「勝者」が含まれます
「勝者」はの配列でありNSDictionary
、辞書の各項目は1プレイヤーからNパワーへのマッピングです。
playerPowers値は、プレーヤーのkey:objectId(PFObject) のPFObjectsの配列です(現在、パワーには名前しかありません)。
NSDictionary
勝者ごとに、次のようなオブジェクトを「勝者」(複数の勝者が存在する可能性があります)に追加します。
NSDictionary * winnerWithPowers = [NSDictionary dictionaryWithObject:tempPowers
forKey:[aWinnerPFObject objectId]];
[newGame addObject:winnerWithPowers forKey:@"winners"];
辞書の各項目について、キーはプレーヤーの既存のobjectIdであり、値はPFObjects
サーバー上の(パワー)の配列です。「勝者」を照会するとき、入力されたすべてのデータ、すべての勝者、およびすべてのデータを含むそれぞれのパワーを取得したいと思いPFObjects
ます。「勝者」を検索すると、各パワーの詳細PFObject
が不完全です(key:nameの値がnullです)。次に、クエリ、結果を出力するコード、2つの勝者を含む辞書の出力を示します。
// viewWillAppearで:
PFQuery * gamesQuery = [PFQuery queryWithClassName:@"Game"];
[gamesQuery orderByDescending:@"createdAt"];
[gamesQuery findObjectsInBackgroundWithBlock:^(NSArray * theGames, NSError * error) {
if (error) {
NSLog(@"ERROR: There was an error with the Query for Games!");
} else {
_gamesPF = [[NSMutableArray alloc] initWithArray:theGames];
[_tableView reloadData];
}
}];
//テーブルビューのcellForRowAtIndexPath:メソッド(これは私自身のTableViewControllerです)
NSArray * testArray = [[_gamesPF objectAtIndex:row] objectForKey:@"winners"];
if ([testArray count] > 0) {
// print contents of first dictionary winners entry
NSLog(@"TestDictfromPF %@", [testArray objectAtIndex:0]);
}
ログ:
2013-01-18 09:42:26.430 GamesTourney[20972:19d03] TestDictfromPF {
jchtlqsuIY = (
"<Power:OlJfby1iuz:(null)> {\n}", // problem is {\n}. Data exists on server but not in local structure after query
"<Power:eQkMUThGOh:(null)> {\n}" // ditto
);
}