这里有一些代码可以帮助你。您可能需要适应的东西你的情况:
地方分配你的主字典:
// assuming its a property
self.scoreObject = [NSMutableDictionary new];
现在,只要您将设置一个名称一双新的日期/分数,首先检查是否存在该名称已经有任何条目。如果是,则使用先前分配的NSMutableDictionary来存储新对。如果不是,分配一个,然后设置新的一对。
我将它封装在接收日期和分数的方法中。
-(void)addNewScore:(NSString*)score AndDate:(NSString*)date forUsername:(NSString*)username
{
NSMutableDictionary *scoresForUser = self.scoreObject[username]; //username is a string with the name of the user, e. g. @"Bob"
if (!scoresForUser)
{
scoresForUser = [NSMutableDictionary new];
self.scoreObject[username] = scoresForUser
}
scoresForUser[date] = score; //setting the new pair date/score in the NSMutableDictionary of scores of that giver user.
}
PS:我用的日期和得分作为例如字符串,但您可以通过用户的NSDate或NSNumber的有没有变化,如果你想。
现在,你可以列出用户的所有得分像这样的东西:
-(void)listScoresForUser:(NSString*)username
{
NSMutableDictionary *scoresForUser = self.scoreObject[username];
for (NSString *date in [scoresForUser allKeys]) {
NSString *score = scoresForUser[date];
NSLog(@"%@ - score: %@, createdAt: %@", username, score, date);
}
}
这样,你应该能够将数据存储在您需要的结构。请让我知道,如果这是你想要的东西。
感谢您的详细解释和编辑你的代码,它的工作真的很好。谢谢! – daspianist