1

私は基本的に、このコードを使用してNSMutableArrayに新しい文字列を追加しようとしています。ViewWillAppear

    NSUserDefaults *favBooksDefaults = [NSUserDefaults standardUserDefaults];
    self.favBook = [favBooksDefaults stringForKey:@"favBook"];
    self.favBookList = [[NSMutableArray alloc]init];
    [self.favBookList addObject:favBook];

もちろん、これを実行している間、配列に存在していた以前のすべての文字列を保持したいと思います。NSUserDefaultsに新しい文字列を追加してから配列に追加すると、古い文字列が置き換えられるだけだからです。

それはなぜで、どうすればすべてのオブジェクトを保存できますか?前もって感謝します。

4

4 に答える 4

1
NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:oldArray];
[newArray replaceObjectAtIndex:oldObjectIndex withObject:newObject] // if you want to replace oldObject with newObject;
[newArray addObject:newObject] // if you want to add object to the array;

私が正しく理解できたら、古いオブジェクトを新しいオブジェクトに置き換えますか?

于 2012-07-27T11:00:06.637 に答える
1
NSUserDefaults *favBooksDefaults = [NSUserDefaults standardUserDefaults];
self.favBook = [favBooksDefaults stringForKey:@"favBook"];
if ([self.favBookList indexOfObject:self.favBook] != NSNotFound) {
    [self.favBookList addObject:favBook];
}

viewDidLoadまた、メソッドで favBookList を初期化する必要があります。

self.favBookList = [NSMutableArray array];
于 2012-07-27T11:01:11.827 に答える
1

新しい NSMutableArray オブジェクトを割り当てて初期化すると、値のない空の配列ができます。そこには代用するものが何もないので、代用しません。最初の値として NSSString を追加するだけです。もちろん、これは NSMutableArray の新しいインスタンスを割り当て/初期化するたびに発生します。

解決策: NSMutableArray をビュー コントローラーのインスタンス変数にします。一度割り当て/初期化します(たとえば、viewDidLoadで)。get が呼び出されるたびviewWillAppearに、新しい NSMutableArray を再初期化せずに値を追加できます。

于 2012-07-27T10:39:17.347 に答える
1

Mr.Br.の答えは正しいです:

ヘッダー ファイルで favBookList をプロパティとして宣言し、本を追加するメソッドを含めます。

@interface yourViewController : UIViewController {
NSMutableArray *favBookList;
}

-(void)addBook;

@property (nonatomic, retain) NSMutableArray *favBookList;

viewDidLoad メソッドで、favBookList を初期化します。@synthesize もお忘れなく!

-(void)viewDidLoad {
self.favBookList = [[NSMutableArray alloc] init];
[super viewDidLoad];
}

これで、いつでもユーザーのデフォルトから本を自由に追加できるようになりました。

-(void)addBook{
self.favBook = [[NSUserDefaults standardUserDefaults] stringForKey:@"favBook"];
[favBookList addObject:favBook]; 
}
于 2012-07-27T16:02:36.230 に答える