ここに役立つコードがあります。あなたの場合に何かを適応させる必要があるかもしれません:
主な口述をどこかに割り当てる:
// assuming its a property
self.scoreObject = [NSMutableDictionary new];
ここで、名前に新しいペアの日付/スコアを設定するときはいつでも、最初にその名前にすでにエントリがあるかどうかを確認してください。はいの場合、以前に割り当てられた NSMutableDictionary を使用して、新しいペアを保存します。そうでない場合は、1 つ割り当ててから、新しいペアを設定します。
日付とスコアを受け取るメソッドにカプセル化しています。
-(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);
}
}
このようにして、必要な構造にデータを格納できるはずです。それがあなたが探していたようなものかどうか教えてください。