Objective c NSUserDefaults中的NSTableView复合列

Objective c NSUserDefaults中的NSTableView复合列,objective-c,macos,nsmutablearray,nsuserdefaults,nstableview,Objective C,Macos,Nsmutablearray,Nsuserdefaults,Nstableview,我有一个表,其中一列用于项目名称,一列用于复选框单元格。 我只研究并找到了特定于iOS的答案(OSX无法采用) 我使用数组控制器在NSMutableDictionary中显示项目名称和复选框单元格(当然,所有内容都在控制器的NSArray中) 问题:问题是,我只能绑定一次复选框单元格的值,这首先是绑定到数组控制器。它正确显示项目名称,并以这种方式显示复选框单元格,但它不会在重新启动时保存复选框单元格的值(毫不奇怪) 现在,由于每列的值都绑定在一起,所以我无法将它们分开。 我研究发现,“共享用

我有一个表,其中一列用于项目名称,一列用于复选框单元格。 我只研究并找到了特定于iOS的答案(OSX无法采用)

我使用数组控制器在NSMutableDictionary中显示项目名称和复选框单元格(当然,所有内容都在控制器的NSArray中)

  • 问题:问题是,我只能绑定一次复选框单元格的值,这首先是绑定到数组控制器。它正确显示项目名称,并以这种方式显示复选框单元格,但它不会在重新启动时保存复选框单元格的值(毫不奇怪)
现在,由于每列的值都绑定在一起,所以我无法将它们分开。 我研究发现,“共享用户默认值控制器”或NSUserDefaults可以用于NSTableView的两个列,但是如何以编程方式填充表呢

连接数据源并将NSTableView内容“MixedValues”绑定到“Shared User Defaults Controller”后,我得到了如下结果:

- (void) myItemListFunction
{
    for (NSUInteger i = 0; i < myItemList.count; i++)
    {
        [rows addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:[myItemList objectAtIndex:i], @"MyItemList", [[NSUserDefaults standardUserDefaults] boolForKey:@"CheckboxCell"], @"CheckboxCell", nil]];

        [[NSUserDefaults standardUserDefaults] setValue:rows forKey:@"MixedValues"];
    }

    [myTableView reloadData];
}
我需要把for循环变量输入到boolforky中,但是如何

Edit2:使用此选项可在NSLog中提供至少一个布尔值:

[rows addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:[myItemList objectAtIndex:i], @"MyItemList", [NSNumber numberWithBool:YES], @"CheckBoxCell", nil]];
Edit3:现在,我得到了保存复选框单元格状态的功能,但是在使用ArrayWorkey时,它使用了整个对象数组。我现在需要的是让它以某种方式为模型键路径“CheckboxCell”中的每个项使用objectAtIndex:I。而且它仍然不显示MyItemList的项目

Edit4:现在看来这段代码只会生成一个复选框,但它遵循了我试图实现的目标:

NSArray *arrayList = [[NSUserDefaults standardUserDefaults] arrayForKey:@"Check"];
arrayList = @[@"0"];

[rows2 addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:[directoryList objectAtIndex:i], @"Logs", arrayList, @"Check", nil]];

需要做的是在最后一行中进行@检查以包括objectAtIndex:i…

以及NSUserDefaults是如何发挥作用的?什么是myItemList?那么如何存储复选框状态值呢?感谢您的快速回复@BlueTomato NSUserDefaults应如问题存储中所述,存储复选框的状态和项目名称列表myItemList,我假设复选框状态值是通过将NSTableView的内容绑定到“共享用户默认控制器”的“MixedValues”来存储的。myItemList只是一个项目名称列表,例如购物清单。为什么不使用NSMutableArray和NSMutableDictionary来存储项目名称或其他与复选框状态值一起存储的内容呢?因为它们在重新启动应用程序后会消失。将NSMutableArray保存到XML文件需要几行代码。但如果那是你想要的,我没什么可说的了。
NSArray *arrayList = [[NSUserDefaults standardUserDefaults] arrayForKey:@"Check"];
arrayList = @[@"0"];

[rows2 addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:[directoryList objectAtIndex:i], @"Logs", arrayList, @"Check", nil]];