NSUserdefaults一个键的多种数据类型

时间:2014-03-27 08:19:47

标签: ios iphone objective-c cocoa-touch nsuserdefaults

在阅读了各种答案后,我发现NSUserDefaults可以为一个密钥保存多个数据类型。但我找不到的是

[NSUserDefaults standardUserDefaults] removeObjectForKey:"someKey"];

删除与该密钥关联的所有数据类型的所有对象?

6 个答案:

答案 0 :(得分:3)

您无法为一个键存储不同类型的对象。

如果为某个键设置了一个对象,它将删除旧对象。

但是,如果您正在搜索为一个密钥存储多个数据的方法,则可以存储NSDictionary。

前:

MyObject *obj = [[MyObject alloc] init];
NSString *otherType = @"mystring";

NSDictionary *multipleData = @{ @"key1" : obj , @"key2" : otherType}

[[NSUserDefaults standardUserDefaults] setObject: multipleData forKey:@"multipleData"];
[[NSUserDefaults standardUserDefaults] synchronize];

如果你想删除它:

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"multipleData"];
[[NSUserDefaults standardUserDefaults] synchronize];

答案 1 :(得分:1)

是的。

您的数据可能是数组或字典或简单的int。此命令将删除该数据。

正如iPatel建议的那样。你需要打电话:

[[NSUserDefaults standardUserDefaults] synchronize];

添加或删除任何数据后。希望这有助于.. :))

答案 2 :(得分:1)

您不能在一个键下存储多个对象。 NSUserDefaults就像NSDictionary一样。为特定键设置对象时,将覆盖旧对象。所以removeObjectForKey:只删除一个对象/值;你在那把钥匙下存放的那个。

答案 3 :(得分:0)

你打电话

[[NSUserDefaults standardUserDefaults] synchronize];

删除密钥的所有数据后,也可能是您无法在单个密钥上存储多个数据,它会返回插入到最后的新数据。 ?

阅读removeObjectForKey of NSUserDefaults.

的官方文档

答案 4 :(得分:0)

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSString *yourDomain = [[NSBundle mainBundle] bundleIdentifier];
[userDefault removePersistentDomainForName:yourDomain];

下面。如果你想重置。

答案 5 :(得分:0)

    NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];