Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何使用核心数据设置NSArrayController?_Objective C_Macos_Core Data_Nsarraycontroller - Fatal编程技术网

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);
}