2016-09-19 4 views
0

현재 체크인 프로그램을 프로그래밍하고 있습니다. NSDictionary를 사용하여 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]; 

NSUserDefaults에 첫 번째 NSDictionary를 추가하기 쉽습니다. 그러나 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로 하나씩 증분됩니다. 너 나 좀 도와 줄 수있어? 감사.

답변

0

사전에 사전을 추가하고 배열을 사전에 저장해야합니다.

[myArray addObject:oldcheckin]; 

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

다음을 검색 할 수

,

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

하고 배열

[arrayOfDicts addObject: newcheckin]; 

에 새 사전을 추가하고 사용자 디폴트의 새로운 배열을 저장합니다.

+0

@vadian 당신 말이 맞습니다. 나는 내 대답을 업데이트했다. 그것을 지적 해 주셔서 감사합니다. –

+0

Thanks @ Teja-Nandamuri. 그것은 작동합니다 :) –