OS X Core Bindings在使用Storyboard时不保存Core Data

时间:2015-03-14 19:41:00

标签: ios xcode swift core-data cocoa-bindings

我有干净的OS X Storyboards项目,使用阵列控制器我绑定了Core Data和NSTableView。它显示了数据。我可以添加/编辑数据。但是当我点击comm + Q时,Core Bindings没有保存。为什么呢?

enter image description here

正如你所看到的,我添加了一个特殊的' 911 Save'用于调用视图控制器内部的AppDelegate.saveAction的按钮。为什么?我不知道。我不得不创建一个,因为空白项目没有。 你的解决方案将帮助我摆脱这个按钮:)

此外,Core Bindings不会删除我选择的行 最重要的是,每次运行都会显示名称'的不同顺序。我该如何排序?

请帮忙!


无法显示我的代码,因为我还没有添加任何代码:) 应该有一种方法可以将视频添加到StackOverflow。 使用NO CODE清洁设置 enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

您的问题基本上与answered here的问题重复,尽管有故事板。

当你将“app delegate”对象添加到VC时,你没有创建指向[NSApp delegate]的指针,你正在创建一个全新的AppDelegate类实例,它在视图加载时被初始化,但它肯定永远不会作为代表附加到NSApplication。 AppDelegate类中没有任何内容可以保证它是附加到应用程序的单例,因此故事板为您创建了另一个AppDelegate实例,它甚至还有一个要绑定的MOC属性。它不是app委托,因此它(可能取决于XCode样板堆栈)从不初始化该MOC。

简单的解决方法是使用以delegate开头的密钥路径绑定应用程序。

答案 1 :(得分:0)

我没有在Storyboard中创建App Delegate的新实例,而是通过在ViewController.h中添加@property并在实现文件中指向App Delegate来创建对[AppDelegate managedObjectContext]的引用,找到了一个解决方案。 / p>

//ViewController.h
@interface ViewController : NSViewController
@property (weak, nonatomic) NSManagedObjectContext *managedObjectContext;
@end

//ViewController.m
- (NSManagedObjectContext *)managedObjectContext {
    return [(AppDelegate *)[[NSApplication sharedApplication] delegate] managedObjectContext];
}

在Storyboard上,然后我将Array Controller设置为绑定到View Controller,以及设置managedObjectContext的模型键路径(ViewController类的属性)。

执行此操作后,我输入的数据仍然存在。