Objective c 如何使用核心数据设置NSArrayController?
我正试图通过编程方式设置一个Objective c 如何使用核心数据设置NSArrayController?,objective-c,macos,core-data,nsarraycontroller,Objective C,Macos,Core Data,Nsarraycontroller,我正试图通过编程方式设置一个NSArrayController来处理核心数据 我知道我的核心数据存储有内容,因为我可以通过托管对象上下文手动检索对象。我将NSArrayController连接到同一托管对象上下文,然后将NSTableColumn的值参数绑定到NSArrayController 我请求NSArrayController获取,但它返回一个空数组 有没有关于我可能做错了什么的建议 接口 @interface MTTableViewController : NSObject <N
NSArrayController
来处理核心数据
我知道我的核心数据存储有内容,因为我可以通过托管对象上下文手动检索对象。我将NSArrayController
连接到同一托管对象上下文,然后将NSTableColumn
的值参数绑定到NSArrayController
我请求NSArrayController
获取,但它返回一个空数组
有没有关于我可能做错了什么的建议
接口
@interface MTTableViewController : NSObject <NSTableViewDelegate, NSTableViewDataSource>
{
NSMutableArray *tableData;
MTTableCell *tableCell;
IBOutlet NSTableColumn *tableColumn;
NSArrayController *dataController;
}
fetch:
不会等待数据加载,而是立即返回
这在支持绑定的环境中是有意义的。通常将表视图绑定到阵列控制器,每当控制器内容发生更改时,该控制器都会更新
在这种情况下,您可以观察控制器的排列对象的变化:
[self.arrayController addObserver:self forKeyPath:@"arrangedObjects" options:NSKeyValueObservingOptionNew context:NULL];
然后:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSLog(@"Data: %@", self.arrayController.arrangedObjects);
}
来源:当您将托管对象上下文分配给datacontroller init方法时,请确保已在委托中初始化托管对象上下文。我检查了委托对托管对象上下文的调用,该调用不是零。还有其他建议吗?试试[dataController fetch:self];安装完成后。不应该,但是…我试过了,但是我仍然没有得到任何物体。SQLite持久性存储不是空的。想法?尝试使用指定的初始化器initWithContent:with nil
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSLog(@"Data: %@", self.arrayController.arrangedObjects);
}