这里有一些代码可以帮助你。您可能需要根据您的情况进行一些调整:
在某处分配您的主要字典:
// 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);
}
}
这样,您应该能够将数据存储在您想要的结构中。请让我知道这是否是您正在寻找的东西。