簡體   English   中英

iOS:在userDefaults中存儲選定的表視圖行

[英]iOS: Storing selected table view rows in userDefaults

在我的應用程序中,我有一個表格視圖,允許用戶通過點擊行來啟用或禁用元素。 很簡單,我需要將每行的條件存儲在userDefaults中-是否已打開。 我將如何處理?

我在想可以將BOOL屬性添加到每一行所代表的對象中,以了解是否啟用了該屬性,但是我將如何記住每個對象的屬性值?

您可以在每一行上使用某種ID,以識別特定行。 然后,您可以創建一個自定義對象並將其存儲在NSUserDefaults中。

看這個問題

您可以創建一系列設置鍵:

// SET
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:YES forKey:@"setting1_ON"];
[defaults setBool:NO forKey:@"setting2_ON"];

// GET
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
bool setting1 = [defaults boolForKey:@"setting1_ON"];
bool setting2 = [defaults boolForKey:@"setting2_ON"];

或存儲所有設置(或字典)的一個數組:

// SET
NSMutableArray *settings = [NSMutableArray array];
for (UITableViewCell *c in [self.tableView subviews]) {
    if (c.selected) {
        [settings addObject:[NSNumber numberWithBool:YES]];
    } else {
        [settings addObject:[NSNumber numberWithBool:NO]];
    }
}
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:settings forKey:@"settings"];

// GET
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *mySettings = (NSMutableArray *)[defaults objectForKey:@"settings"];
setting1 = [mySettings objectAtIndex:1];
setting2 = [mySettings objectAtIndex:2];

關於這一點,您可能會考慮其他兩種選擇:1.將所有BOOL保留在一個數組中,而不是將它們添加到單元格中,然后在需要時進行存儲; 2.創建一個NSObject作為您的設置,將其全部保留在其中,然后存儲整個對象:

NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:myApp.settings];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:myEncodedObject forKey:@"settings"];

為此,您必須向該設置對象添加編碼/解碼內容。還有更多關於在這些部分周圍存儲自定義對象的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM