iOS:在UserDefault中存储选定的表视图行

iOS:在UserDefault中存储选定的表视图行,ios,nsuserdefaults,Ios,Nsuserdefaults,在我的应用程序中,我有一个tableview,允许用户通过点击行来启用或禁用元素。很简单,我需要将每一行的条件存储在userDefaults中——不管它是否打开。我该怎么办 我在想,我可以为每一行表示的对象添加一个BOOL属性,以确定其是否已启用,但如何记住每个对象的属性值?您可以在每一行上使用某种id来识别特定的行。然后您可以创建一个自定义对象并将其存储在NSUserDefaults中 您只需创建一组设置键: // SET NSUserDefaults *defaults = [NSUserD

在我的应用程序中,我有一个tableview,允许用户通过点击行来启用或禁用元素。很简单,我需要将每一行的条件存储在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"];
或存储所有设置(或字典)的一个数组:

在这张纸条上,你可以考虑其他2种选择…1.只需将所有布尔值保存在一个数组中,而不是将它们添加到单元格中,然后在需要时存储它们;2.创建一个作为设置的NSObject,将它们全部保存在其中,然后存储整个对象:

NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:myApp.settings];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:myEncodedObject forKey:@"settings"];
要做到这一点,你必须添加编码/解码的东西,设置对象。。。有关在这些零件周围存储自定义对象的详细信息

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