-2

nsuserdefault から配列をロードしたいのですが、その配列に何かを追加してから、nsuserdefault を新​​しく更新された配列で更新したいので、次のことを行っています。

NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
if([defs valueForKey:@"Images"] )
{
    [appDelegate.arrayOfPaths addObject :[NSString stringWithFormat:@"%@", [defs valueForKey:@"Images"]]];
}
[appDelegate.arrayOfPaths addObject:path];
NSLog(@"_arrayOfPaths%@",appDelegate.arrayOfPaths);
[defs setObject:appDelegate.arrayOfPaths forKey:@"Images"];
NSLog(@"%@",[defs valueForKey:@"Images"]);
[appDelegate.arrayOfPaths removeAllObjects]; 

したがって、私の問題は、最初に NSUserdefalut を使用して配列をロードするときです。そのため、配列は 1 つのオブジェクト (文字列) を含む 1 つの配列でファイルされます。次に、配列を新しい文字列で更新し、それを nsuserdefalut に追加しますが、nsuserdefalut では最初のオブジェクトは配列ですある文字列と別の文字列は単なる文字列です。これは必要ありません。すべての文字列を含む nsuserdefault の配列が 1 つだけ必要です。これを達成する方法を教えてください

4

1 に答える 1

1

コード行を置き換えてください....

 [appDelegate.arrayOfPaths addObject :[NSString stringWithFormat:@"%@", [defs valueForKey:@"Images"]]];

このように、nsuserのデフォルトで1つの配列内のすべての文字列を取得するには...

 [appDelegate.arrayOfPaths addObjectsFromArray : [defs valueForKey:@"Images"]]];

これはあなたの要件を満たします。

于 2013-03-29T08:49:51.250 に答える