使用NSArrayController向NSTableView添加数据后出现空行,求助排查
问题排查与解决方案
针对你遇到的NSTableView添加行后内容为空的问题,可按以下步骤逐一排查:
1. 核对绑定的模型键路径大小写
确认NSTableViewColumn的模型键路径与字典中的键完全一致(包括大小写)。若绑定过程中误将Name写成小写name、Surname写成surname,会导致无法读取对应值。
2. 检查ArrayController的Content Array绑定
确保_myArrayController的Content Array已绑定到一个可变数组属性:
- 在ViewController中声明属性:
@property (nonatomic, strong) NSMutableArray *dataArray; - 在XIB/Storyboard中,将ArrayController的
Content Array绑定到该ViewController的dataArray属性。若未绑定,ArrayController内部数组无法持久化对象,仅能生成空行。
3. 替换字典创建方式排查
将字典创建代码替换为现代字面量写法,避免dictionaryWithObjectsAndKeys可能的参数顺序问题(虽然你的写法逻辑正确,但可排除语法隐患):
- (IBAction)setData:(id)sender{ NSMutableDictionary *newItem = @{@"Name": @"James", @"Surname": @"Smith"}.mutableCopy; [_myArrayController addObject:newItem]; }
4. 验证ArrayController的Object Class设置
在XIB/Storyboard中选中ArrayController,查看属性面板的Object Class是否设为NSMutableDictionary。若设置了其他自定义类且该类无Name、Surname属性,会导致值无法读取。
5. 确认绑定目标正确性
检查NSTableViewColumn的绑定目标是否为_myArrayController,避免误选其他对象作为数据源载体。
内容的提问来源于stack exchange,提问作者GeraldTheGerm
相关产品推荐
相关产品推荐

