[英]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 *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.