私は2つのView Controllerを持っています。最初のものは別のビューコントローラにセグを持っています。後者のビューコントローラでは、テキストフィールドからの項目を追加し、ボタンをクリックして配列に保存します。この配列は、NSUserDefaultsを使用して保存されます。NSUserDefaultsを使用して保存された配列の値を保持
以下のコードでは、項目を配列に正常に保存できます。この配列は、NSUserDefaultsを使用して保存されます。しかし、最初のView Controllerに戻り、2番目のView Controllerに再度アクセスして配列に新しい項目を追加すると、以前保存した項目はなくなりました。新しく追加されたアイテムだけが保存されました。
誰かが私はいくつかのシリアライゼーションをしなければならないと言った、どのように行われますか?そして他の方法がある場合は、私の.mファイルの私の.hファイルで
@interface AddCardViewController : UIViewController <UITextFieldDelegate>
@property (strong, nonatomic) IBOutlet UITextField *cardNameTextField;
@end
@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に戻ってくると、あなたの配列はゼロになります。だからあなたが何かを追加すると、それはあなたの配列に格納され、それはuserdefaultsに保存されます。毎回新しいものを配列やユーザのデフォルトに追加しました。 –
のaddNewCardメソッド - NSUserDefaultsのデータをnameOfCardsに読み込んでから新しいものを追加し、[配列の値を保持する方法]の – SVGreg
の複製を保存します(http://stackoverflow.com/questions/10069593/how-to- array-of-an-arrayを保持する) –