我在 iOS 应用程序中使用 parse.com 将数据存储到解析云服务。我在查询嵌套对象时遇到问题。我有以下数据模型:
“游戏”类包含“赢家”
"winners" 是一个数组NSDictionary
,字典中的每一项都是 1 个玩家到 N 个权力的映射
playerPowers 值是一个PFObjects 数组(权力目前只有一个名称),用于key:objectId的玩家(PFObject)
对于每个获胜者,我向“获胜者”(可以有多个获胜者)添加一个NSDictionary
对象,如下所示:
NSDictionary * winnerWithPowers = [NSDictionary dictionaryWithObject:tempPowers
forKey:[aWinnerPFObject objectId]];
[newGame addObject:winnerWithPowers forKey:@"winners"];
对于字典中的每个项目,键是玩家的现有 objectId,值是PFObjects
也在服务器上的 (powers) 数组。当我查询“获胜者”时,我想检索所有填充的数据、所有获胜者及其各自的权力PFObjects
及其所有数据。当我查询“获胜者”时,每个权力的详细信息PFObject
都不完整(key:name 的值为 null)。以下是查询,然后是打印结果的代码,然后是包含两个获胜者的字典的输出:
// 在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];
}
}];
// 在tableview 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
);
}