두 개의보기 컨트롤러가 있습니다. 첫 번째 뷰에는 다른 뷰 컨트롤러에 대한 세그 (segue)가 있습니다. 후자의보기 컨트롤러에서 원하는 것은 텍스트 필드에서 오는 항목을 추가 한 다음 단추를 클릭하여 배열에 저장하는 것입니다. 그런 다음이 배열은 NSUserDefaults를 사용하여 저장됩니다.NSUserDefaults를 사용하여 저장된 배열의 값 유지
아래 코드에서 배열에 항목을 성공적으로 저장할 수 있습니다. 이 배열은 NSUserDefaults를 사용하여 저장됩니다. 그러나 첫 번째보기 컨트롤러로 돌아가서 두 번째보기 컨트롤러로 다시 이동하여 배열에 새 항목을 추가하면 이전에 저장 한 항목이 사라졌습니다. 새롭게 추가 된 항목 만 저장되었습니다.
누군가 내가 직렬화를해야한다고 말했는데, 어떻게 완료 되었습니까? 다른 방법이 있는지와, 조언을
@interface AddCardViewController()
@property (nonatomic, strong)NSMutableArray *nameOfCards;
@end
@implementation AddCardViewController
@synthesize cardNameTextField = _cardNameTextField;
@synthesize nameOfCards = _nameOfCards;
// setting my array
- (NSMutableArray *)nameOfCards
{
if (!_nameOfCards) _nameOfCards = [[NSMutableArray alloc] init];
return _nameOfCards;
}
- (void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.cardNameTextField.delegate = self;
}
- (BOOL) textFieldShouldReturn:(UITextField *)textField{
[self.cardNameTextField resignFirstResponder];
return YES;
}
- (void)viewDidLoad
{
//getting the data saved
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *cardName = [defaults objectForKey:@"cardName"];
NSLog(@"contents of my array %@", cardName);
[super viewDidLoad];
}
- (IBAction)addNewCard:(id)sender {
[self.nameOfCards addObject:self.cardNameTextField.text];
NSLog(@"contents :%@", _nameOfCards);
// this is how to save the data
NSMutableArray *cardName = _nameOfCards;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:cardName forKey:@"cardName"];
[defaults synchronize];
NSLog(@"data saved");
}
@end
addnewcard 버튼을 클릭하면 nsuserdefaults에 배열이 저장됩니다. 하지만 당신이 그 viewcontroller에 getback하면 배열은 무효가 될 것입니다. u를 추가하면 배열에 저장되고 userdefaults에 저장됩니다. 그래서 매회 array와 userdefaults에 새로운 것을 추가했습니다. –
addNewCard 메서드 - NSUserDefaults에서 nameOfCards로 데이터를 읽은 다음 새 노드를 추가 한 다음 [배열 값 유지 방법] – SVGreg
중복 복제 가능 (http://stackoverflow.com/questions/10069593/how-to- array-of-an-array를 유지) –