如何收集两个 NSDictionary 并添加到 NSUserDefaults?

How to gather two NSDictionary and add to NSUserDefaults?

我目前正在编写签到应用程序。我正在尝试使用 NSDictionary 将所有签入详细信息收集到 NSUserDefaults。我有这个代码块;

NSMutableDictionary *oldcheckin =[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"MissionID"];
            if([oldcheckin valueForKey:@"CheckinID"]) // I don't know how to take last object CheckinID value
            {
                int number = [[oldcheckin valueForKey:@"CheckinID"] intValue] +1;
                NSMutableDictionary *newcheckin= [[NSMutableDictionary alloc] initWithObjectsAndKeys:[NSString stringWithFormat:@"%d",number], @"CheckinID",dateRightLabel.text, @"Date", noteLabel.text, @"Note",typeLabel.text, @"TypeID",projectLabel.text, @"ProjectID",noteLabel.text, @"Note", longitute, @"Longitute",latitude, @"Latitude",nil];
            }
            else
            {
                [[NSUserDefaults standardUserDefaults] setObject:[[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1", @"CheckinID",dateRightLabel.text, @"Date", noteLabel.text, @"Note",typeLabel.text, @"TypeID",projectLabel.text, @"ProjectID",noteLabel.text, @"Note", longitute, @"Longitute",latitude, @"Latitude",nil] forKey:@"MissionID"];
                 NSDictionary * myDictionary = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"MissionID"];
                 NSLog(@"%@",myDictionary);

            }
            [[NSUserDefaults standardUserDefaults] synchronize];

很容易将第一个 NSDictionary 添加到 NSUserDefaults。然而,很难获取之前的 NSDictionary 值并使用新的签入值进行收集。例如,我第一次使用上面给出的代码块将这些值添加到 NSUserDefaults。

{
CheckinID = 1;
Date = "2016.09.19 21:15";
Latitude = "37.33233141";
Longitute = "-122.03121860";
Note = "test";
ProjectID = "2";
TypeID = "1";
}

当我想添加另一个入住详细信息时,我需要将旧的入住详细信息与新的入住详细信息进行收集。例如;

{
CheckinID = 1;
Date = "2016.09.19 21:15";
Latitude = "37.33233141";
Longitute = "-122.03121860";
Note = "test";
ProjectID = "2";
TypeID = "1";
},
{
CheckinID = 2;
Date = "2016.09.20 21:15";
Latitude = "35.33233141";
Longitute = "120.03121860";
Note = "test2";
ProjectID = "5";
TypeID = "4";
}

诸如此类,我需要记录每次入住的详细信息。顺便说一下,CheckinID 将作为最后一个 checkinID 递增 1。你能帮助我吗?谢谢

您需要将字典添加到数组中,并将数组保存到字典中。

[myArray addObject:oldcheckin];

 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
  [userDefaults setObject:myArray forKey:@"myDictArray"];

然后检索它,

 NSMutableArray *arrayOfDicts = [[userDefaults objectForKey:@"myDictArray"]mutableCopy];

并将新词典添加到数组

 [arrayOfDicts addObject: newcheckin];

并将新数组保存在用户默认值中。