简体   繁体   English

NSUserdefault一键设置多种数据类型

[英]NSUserdefaults multiple data types for one key

After reading from various answers I have come to know that NSUserDefaults can save multiple datatypes for one key. 从各种答案中读取后,我知道NSUserDefaults可以为一个键保存多种数据类型。 But what I cannot find is if 但是我找不到的是

[NSUserDefaults standardUserDefaults] removeObjectForKey:"someKey"];

removes all objects of all data types associated with that key? 删除与该键关联的所有数据类型的所有对象?

You cannot store different kind of objects for one key. 您不能为一个键存储不同类型的对象。

If you set an object for a key it will erase the old one. 如果您为一个钥匙设置一个对象,它将删除旧的钥匙。

But, if your are searching for a way to store multiple data for one key, you can store a NSDictionary. 但是,如果您正在寻找一种方法来存储一个键的多个数据,则可以存储NSDictionary。

Ex : 例如:

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

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

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

And if you want to remove it : 如果要删除它:

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

Yes it does. 是的,它确实。

Your data may be anything an array or dictionary or simple int. 您的数据可以是数组,字典或简单int的任何数据。 This command will remove that data. 此命令将删除该数据。

As iPatel suggested. 正如iPatel所建议的。 You need to call: 您需要致电:

[[NSUserDefaults standardUserDefaults] synchronize];

After adding or deleting any data. 添加或删除任何数据之后。 Hope this helps.. :) 希望这可以帮助.. :)

You cannot store multiple objects under one key. 您不能在一个键下存储多个对象。 NSUserDefaults acts just like a NSDictionary . NSUserDefaults行为就像NSDictionary When you set an object for a specific key you overwrite the old object. 当您为特定键设置对象时,您将覆盖旧对象。 So removeObjectForKey: just removes one object/value; 所以removeObjectForKey:只删除一个对象/值; the one you had stored under that key. 您在该密钥下存储的那个。

Do you call 你打电话吗

[[NSUserDefaults standardUserDefaults] synchronize];

after delete all the data of the key and also might be you can not store multiple data on single key, it's return new one that inserted to last. 删除密钥的所有数据后,也可能是您无法在单个密钥上存储多个数据,它会返回插入到最后的新数据。 ?

Read official documentation of removeObjectForKey of NSUserDefaults. 阅读NSUserDefaults的removeObjectForKey的官方文档

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

Here. 这里。 if u want to reset. 如果你想重置。

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

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

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