設定するときNSUserDefaults
、私は最初にこのコードを使用してデフォルトを設定していました...
NSMutableArray *array = [NSMutableArray arrayWithObjects: @"string1", @"string2", @"string3", nil];
[[NSUserDefaults standardUserDefaults] setObject:array forKey: @"preset1"];
[[NSUserDefaults standardUserDefaults] synchronize];
代わりにこれを使用する必要があることを学びました。
NSMutableArray *array = [NSMutableArray arrayWithObjects: @"string1", @"string2", @"string3", nil];
NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:array forKey:@"preset1"];
[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
現在、でオブジェクトを操作する際に問題が発生していますarray
。から文字列を追加/削除するために使用するコードは次のとおりですarray
。最初の例で最初にデフォルトを手動で設定していたときは、正常に機能しました。これで、オブジェクトは配列から削除されません。LLDBデバッガーで配列を印刷しているときに気づきましたが、これは直前のときにarray
として保存されています。NSCFArray
NSArray
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObjectsFromArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"preset1"]];
NSArray *stringsToRemove = @[@"string1", @"string2" ];
for (NSUInteger i = 0; i < stringsToRemove.count; i++) {
[array removeObjectIdenticalTo:[stringsToRemove objectAtIndex:i]];
}
[[NSUserDefaults standardUserDefaults] setObject:array forKey: @"preset1"];
[[NSUserDefaults standardUserDefaults] synchronize];