问题标签 [cocoa-bindings]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1497 浏览

cocoa - 如何使用 Core Data 和抽象实体创建主从接口?

Apple 有一个很好的小教程,用于制作简单的主从界面。Interface Builder 甚至会自动从 Core Data 实体为您生成一个。但是,我正在尝试做一些比简单示例更复杂的事情,并且我一直在努力让它发挥作用。

我有一个基于核心数据文档的应用程序。该模型包括一个抽象实体 Page,以及 Page 的几个具体子实体。所有页面都有一些共同的属性(例如“名称”),并且这些属性在 Page.xml 中定义。显然,子实体具有它们独有的属性。

我希望界面允许用户在主列表(NSTableView)中查看所有类型的页面。当他们选择一个页面时,显示的详细信息字段将取决于它是什么类型的页面。

这是我现在拥有的:

我有一个主 nib 文件,其中显示了主列表,以及页面共有的所有字段。每种页面类型都有一个带有特定字段的 nib。主 nib 文件中有主 NSArrayController,用于填充 NSTableView。每个页面特定的 nib 中都有一个 NSArrayController ,这样我就可以将详细信息字段绑定到当前选择的属性。我所有的 NSArrayController 都配置相同,并且我将它们都绑定到相同的 managedObjectContext 和相同的 selectionIndexes。

我正在使用 Aaron Hillegass 的视图交换方法,他在他的 Cocoa 书中描述了这种方法。于是我注册了NSTableViewSelectionDidChangeNotifications,当我收到一个时,它会调用一个方法switchView:

switchView 查看当前选中的对象,检查它是哪种类型的 Page,并根据 Hillegass 的方法在适当的 nib 文件中交换。

如果我只添加一种类型的页面,一切正常,但是一旦我添加第二种类型的页面,我就会收到此错误:

对象的键路径选择索引值设置错误(来自绑定对象实体:页,选定对象数:1):[ valueForUndefinedKey:]:实体 NoColPage 与键侧的键值编码不兼容。

错误的最后一部分是有道理的:它试图显示错误的笔尖,因此它试图绑定到该对象不存在的字段。

我在 MyDocument 中添加了一个 selectionIndexes 字段,以便我所有的 NSArrayControllers 都可以绑定到同一个地方。我为此苦恼了好几天,也想不通。有任何想法吗?

如果有帮助,这里有一个示例项目,您可以下载。我只从我的项目中提取与这个问题相关的东西到一个新的虚拟应用程序中,我一直在用它来测试和玩耍。

PS:Interface Builder 用于从 Core Data 实体生成主从接口的工具不像我希望的抽象实体那样工作。它只为超实体中的属性创建字段。

编辑:我认为约书亚正在做某事,但不幸的是,它不起作用——我一直遇到同样的问题。起初我很难过,因为我不明白 -unbind: 需要一个字符串常量,而不是一个关键路径。

我尝试了几种变体:我跟踪当前显示的 nib 的阵列控制器;我在其中跟踪当前显示的页面类型,并且仅在尝试显示不同的页面类型时取消绑定/重新绑定...

这是代码的相关部分。

}

0 投票
1 回答
320 浏览

xcode - 调用 Core Data 中的特定记录

我正在为玩家设置一个编辑窗口来编辑他的用户数据。我已经将编辑表单上的所有字段绑定到适当的核心数据实体(通过NSArrayController),并且我已经awakeFromNib安装了一个方法来处理调用记录,但我不确定在方法中放置什么让记录显示。

最终,我的目标是设置它,以便应用程序检查用户是否存在条目,如果表中没有条目,则为他创建一个。

0 投票
1 回答
253 浏览

xcode - 在 Xcode 中使用 Bindings 进行修补

让我们看两个 Core Data 实体,设置如下:

实体 A:汽车

B 实体:制造商

现在,我想做的是将显示器绑定到NSTableView一个列中,我们将汽车的型号放在一列中,然后是制造商,然后是年份。绑定模型和年份没有问题,但是如果我将关系绑定到表中的列,我会在该列的每个单元格中得到关系错误错误的文本,而不是我要查找的任何内容。 如何使用绑定来显示与汽车相关的正确制造商名称?

进一步扩展问题,我如何设置另一个表格视图来显示Car具有相同manufacturer关系的其他条目?

0 投票
1 回答
394 浏览

cocoa - 使表的显示依赖于 Interface Builder 中另一个表中的选择

我用两个 NSTableViews 设置了一个窗口。在 Core Data 中,我设置了两个实体,其中一个包含另一个更大分组的成员(例如carsmanufacturers)。我已经为每个实体设置了入口页面,它们在那里玩得很好(尝试从下拉菜单中的多对一中进行选择时不会出错)。我现在要做的是更进一步,这样当我manufacturer在 main 中选择 a 时,与之相关NSTableView的列表将出现在 second 中。carsmanufacuturerNSTableView

我尝试使用类似于我为manufacturer弹出按钮所做的绑定,从cars实体提供值,但它只是显示所有car条目的列表,无论manufacturer我选择哪个。但是,我看不到谓词过滤它的任何选项,如果我将绑定的键路径设置为manufacturer.cars,它会显示关系错误。如何过滤子表中显示的内容?

0 投票
2 回答
1779 浏览

objective-c - 由 NSSlider 控制的 IKImageView 缩放

通过 NSSlider 在 IKImageView 中设置图像缩放系数的最佳实践是什么?

我能够绑定一个滑块来放大缩小IKImageView 的操作。显然,我宁愿看到一个控制这两个动作的滑块。最好,如果在每次更改滑块后刷新图像(即使尚未释放鼠标按钮,也会持续刷新)。

0 投票
1 回答
1227 浏览

cocoa - 表视图未根据绑定更新 - 第二部分

标题从这个问题借来,这个不是重复的。请参阅我的回答,了解该提问者的问题;我是那个答案的作者,我的问题不是那个。

我有一个包含三列的表视图,其值绑定绑定到arrangedObjects数组控制器的三个属性。数组控制器contentArray绑定到visitationResults我的文档对象;该数组中的项目是模型类 (VisitationResult) 的实例。我还将数组控制器的selectionIndexes和绑定sortDescriptors到我的文档的属性。

我正在通过几个访问器改变我的属性:

NSLog语句运行,并确认数组控制器正在收集和排列我的模型对象。这意味着我正在检查我的财产并获得我的文档的 KVO 通知(这证明了前面提问者的问题,即绕过财产的问题,不是我遇到的问题)。

我在模型对象类的访问器方法中添加了NSLog语句。其中一个被数组控制器调用,以便对对象进行排序(该属性是排序键)。另外两个,阵列控制器不知道,永远不会被调用。

因此,我的表格视图保持空白。

0 投票
1 回答
929 浏览

cocoa - 使用 CoreData 自动持久化从 NSArrayController 中删除对象

我有一个NSTableView与一列绑定到NSArrayController代表一个实体的集合NSManagedObjectContext。我还有一个“删除”按钮,连接到NSArrayController's删除操作,一切正常 - 表格显示数据,当我单击“删除”时,实体会从表格中删除等。

但是,这种删除似乎只发生在对象图中从未持久化到磁盘上。是否有任何标志或方法可以自动将此类更改持久保存到对象图,或者是IBAction为删除按钮引入新按钮并先显式调用remove控制器然后再调用save的唯一方法NSManagedObjectContext

0 投票
1 回答
3704 浏览

cocoa - 带有由核心数据驱动的绑定的 NSOutlineView

我有一个NSOutlineView作为我的应用程序的源列表,我的数据模型是使用 Core Data 完成的。我想使用绑定(如果可能的话)将这些东西粘合在一起,如下所示:

我的模型中有三个主要实体,例如,我们称它们为“商店”、“汽车”和“人”。

我的目标是让大纲视图有 3 个“组”(可扩展节点,如 iTunes 中的播放列表),每个组代表并列出我的一个实体,而且我的窗口底部有三个按钮用于“添加商店”、“添加汽车”等,我想连接起来以执行该操作。

到目前为止,在我的窗口笔尖中,我有一个 TreeController,它绑定到我的窗口控制器的 NSManagedObjectContext 实例,但我不知道如何正确绑定和填充 TreeController 的大纲视图。

这可能与绑定?我看过一个教程,其中创建了第二个托管对象模型,其中包含大纲节点的实体,但对文章的一些评论说这是一个坏主意。我不确定如何继续,任何帮助都会很棒!

0 投票
1 回答
393 浏览

cocoa - 使用 Cocoa 绑定时如何取消保存首选项?

我刚刚开始搞乱绑定。我已经开始实现首选项对话框,将一些 NSColorWell 绑定到共享默认控制器。这是完美的工作。我的值已正确编码和保存。

但是,不起作用的是取消对话框。如果我取消,这些值仍会保存。

似乎我应该将取消按钮绑定到 NSUserDefaultController 的“revert”,但当然如果我这样做,我不能将它绑定到“performClose”(除非有一种方法可以将按钮绑定到我的多个操作'不知道)。

我应该绑定取消按钮以恢复更改并关闭窗口。显然我可以通过编写一个两者都做的动作方法来做到这一点,但似乎只在 IB 中应该是可能的。

0 投票
2 回答
849 浏览

cocoa - 为什么我的 NSTableView 中的图像淡出?

首先,有一个NSArrayController(“服务器”),其内容是“服务器”对象的数组。

我也有NSTableView一个专栏。该列绑定到服务器的“arrangedObjects.status”属性。

我使用自定义NSValueConverter将该状态转换为列的图像,该图像dataCellNSImageCell.

我不明白为什么列中显示的图像是正确的,但始终淡出。只是为了测试,我在表格视图之外有相同的图像进行比较,它画得很好。图像中的颜色不是半透明的。

NSImageCell绘制的图像是否褪色?我可以在 IB 中配置一些东西来使它们完全饱和吗?