繁体   English   中英

NSUserdefault一键设置多种数据类型

[英]NSUserdefaults multiple data types for one key

从各种答案中读取后,我知道NSUserDefaults可以为一个键保存多种数据类型。 但是我找不到的是

[NSUserDefaults standardUserDefaults] removeObjectForKey:"someKey"];

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

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

如果您为一个钥匙设置一个对象,它将删除旧的钥匙。

但是,如果您正在寻找一种方法来存储一个键的多个数据,则可以存储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];

是的,它确实。

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

正如iPatel所建议的。 您需要致电:

[[NSUserDefaults standardUserDefaults] synchronize];

添加或删除任何数据之后。 希望这可以帮助.. :)

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

你打电话吗

[[NSUserDefaults standardUserDefaults] synchronize];

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

阅读NSUserDefaults的removeObjectForKey的官方文档

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

这里。 如果你想重置。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM