簡體   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