在阅读了各种答案后,我发现NSUserDefaults
可以为一个密钥保存多个数据类型。但我找不到的是
[NSUserDefaults standardUserDefaults] removeObjectForKey:"someKey"];
删除与该密钥关联的所有数据类型的所有对象?
答案 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];
删除密钥的所有数据后,也可能是您无法在单个密钥上存储多个数据,它会返回插入到最后的新数据。 ?
的官方文档答案 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];