【发布时间】:2011-11-22 15:25:21
【问题描述】:
我正在尝试以编程方式设置 NSArrayController 以使用 Core Data。
我知道我的核心数据存储有内容,因为我可以通过托管对象上下文手动检索对象。我将NSArrayController 连接到同一个托管对象上下文,然后将NSTableColumn 的值参数绑定到NSArrayController。
我让NSArrayController 获取,但它返回一个空数组。
关于我可能做错的任何建议?
界面
@interface MTTableViewController : NSObject <NSTableViewDelegate, NSTableViewDataSource>
{
NSMutableArray *tableData;
MTTableCell *tableCell;
IBOutlet NSTableColumn *tableColumn;
NSArrayController *dataController;
}
实施
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
dataController = [[NSArrayController alloc] init];
[dataController setManagedObjectContext:[[NSApp delegate] managedObjectContext]];
[dataController setEntityName:@"Track"];
[dataController setAutomaticallyPreparesContent:YES];
[dataController fetch:self];
NSArray *content = [dataController arrangedObjects];
NSLog(@"Count :%i", (int)[content count]); //Outputs 0
tableCell = [[MTTableCell alloc] initTextCell:@""];
[tableColumn setDataCell:tableCell];
}
return self;
}
【问题讨论】:
-
确保您的托管对象上下文在您将其分配给数据控制器初始化方法时已在委托中初始化。
-
我检查了委托对托管对象上下文的调用,它不是零。还有其他建议吗?
-
尝试 [dataController fetch:self];设置后。不应该但是...
-
我试过了,但我仍然得到零个对象。 SQLite 持久存储不为空。想法?
-
尝试使用指定的初始化器 initWithContent: with nil
标签: objective-c macos core-data nsarraycontroller