我有两个A和B类,从A到n B的关系为1:n。在A中有关系属性bs(未排序),在B中有关系属性。
A和B实际上是从项目的核心数据模型自动生成的NSManagedObject。
在NSViewController中,我有一个ArrayController和一个基于单元格的NSTableView,我需要通过它来显示和管理b。
ArrayController有:
表的每一列都绑定到Array Controller arrangeObjects.b_attribute
该表按预期显示了b,我可以编辑它们。
尝试添加新b时会出现问题。
控制器有一个按钮,其动作绑定到Array Controller add:方法。
不幸的是,当我按下按钮时,我收到以下错误:
error: CoreData: error: Failed to call designated initializer
on NSManagedObject class 'B'
CoreData: error: CoreData: error: Failed to call designated
initializer on NSManagedObject class 'B'
挖掘StackOverflow我发现问题可能与使用以下方法创建托管对象有关:
... = [[B alloc] init];
而不是
... = [NSEntityDescription insertNewObjectForEntityForName:@"B" inManagedObjectContext:_managedObjectContext];
由于我没有明确创建b对象,我不认为是这种情况,但我无法弄清楚我做错了什么。
提前感谢您提供的任何帮助。
答案 0 :(得分:0)
设置ArrayController:
模式:实体名称
实体名称:B
准备内容:是
答案 1 :(得分:0)
我按如下方式排除了这个问题:
按钮启动添加新B的方法:
B * b = [NSEntityDescription insertNewObjectForEntityForName:@" B" inManagedObjectContext:_managedObjectContext];
[_ bsController addObject:b]; }
可行,在表格中正确创建一个空行。