问题标签 [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 投票
1 回答
413 浏览

cocoa - 更新核心数据中的价值

我正在尝试编写一个简单的库存检查程序,并且我有一个绑定到核心数据的表视图。该表有 3 列:型号、价格和库存数量。

我在这下面有一个 NSTextField 和一个 NSButton,这样用户就可以输入他们想要购买的数量,当他们点击“添加到购物车”时,程序应该在“库存数量”列中获取值,在选中的行,并减去输入到 NSTextField 中的值,显然,如果库存不足,它会返回错误。同时,应将所需的整行、型号、价格和数量添加到“发票”中。

我的问题是:我将如何检索所选行的数量字段中的值,对其进行操作并将其重新插入表中?

还是我必须直接编辑核心数据?我该怎么做呢?

非常感谢,迈克尔

0 投票
1 回答
339 浏览

cocoa - 绑定枚举属性的最简洁方法是什么?

我有一个菜单,其中包含枚举中每个值的项目。

菜单:

枚举:

物业:

连接这个最干净的方法是什么?我有两个想法,但都让我觉得不满意。

第一个想法:为每个值(等)创建属性sortMethodIsDueDate这些setSortMethodIsDueDate:属性将调用setTaskSortMethod:和调用valueDidChange:@"sortMethodIsDueDate"等。然后菜单项将绑定到这些属性。这似乎需要做很多工作。

第二个想法:连接每个菜单项,-(IBAction)updateSortMethod:(id)sender然后可以迭代菜单项并根据sender. 这种方法很好,直到taskSortMethod被不同的代码部分更改,此时需要添加代码以保持菜单与taskSortMethod.

我倾向于第一种方法,因为它在 V 和 C 之间有更好的分离。

有更好的想法吗?

0 投票
2 回答
1093 浏览

cocoa - 如何在 Cocoa 中使用 Bindings+CoreData 实现 iTunes 风格的 Source-List?

假设,为了说明,我正在用 Cocoa 编写一个由 CoreData 支持的 iTunes 克隆应用程序。为简化起见,假设有两个“部分”,“库”包含音乐、电影、广播等内容。第二个部分称为“播放列表”,其中包含用户生成的播放列表(只是哑列表,不是智能播放列表) .

所以 SourceList 本身通常会用 来实现NSOutlineView,这通常很简单。

源列表的库部分实际上并没有包含用户生成的任何内容,只有应用程序的“功能”(本质上),其中播放列表部分仅包含用户创建的自定义列表。如何使用 Bindings 和 CoreData 做到这一点?是否可以仅将播放列表部分绑定到用户数据并具有显示库功能的自定义方式?

总的来说,我仍然对 Bindings 和 AppKit 感到困惑,所以请多多包涵。我很感激帮助。我应该补充一点,我的目标是 10.6 及更高版本。

0 投票
2 回答
1879 浏览

objective-c - 可可中的碳崩溃:NSAutoreleasePool 释放后的 EXC_BAD_ACCESS

我正在使用 Bindings 为 Photoshop CS3 插件开发 Cocoa 用户界面。(Cocoa 中的 Carbon,因为 PS 是 Carbon 应用程序)EXC_BAD_ACCESS当我关闭我的模态NSWindowNSAutoreleasePool发布时出现错误。

我相信它与我在 nib 文件中的绑定和控制视图有关,因为当我从 nib 的复选框和单选按钮中删除绑定时,窗口可以无限次关闭而不会崩溃。

我现在已经花了几个小时在 Instruments 上试图找出哪个对象可能会提前释放(或双重释放)并且找不到它。

NSAutoreleasePool现在我的想法是,在一段时间内使用 Cocoa Bindings运行模式窗口时,我可能会遗漏一些东西。就像在关闭窗口以“完成”所有绑定以防止它们将消息发送到已释放对象之前我应该​​做的事情一样。

这是我正在做的一个基本代码示例:

模态窗口通过调用关闭:

这是一个堆栈跟踪:

打开 NSZombieEnabled 并没有出现任何双重释放的对象(尽管 Photoshop 本身有 1 个)

关闭所有绑定可以消除任何崩溃。

有任何想法吗?

0 投票
1 回答
1931 浏览

cocoa - 使用跨越多个实体的核心数据绑定在 Cocoa 中实现父->子向下钻取

我正在尝试以 iTunes 流派浏览器的风格为我的核心数据模型创建一个简单的界面。

我有一个包含三个实体的模型设置:Genre <-->> Artist <-->> Album.

我想简单地将它们分别绑定到一个 NSTableView,但似乎从 NSArrayController 访问子关系不符合 KVC。所以,我很难将选定的流派对象传达给 ArtistController。

你怎么做到这一点?在没有任何自定义子类的情况下甚至可以在 IB 中实现吗?

为后代编辑: 我做错了几件事。

  • 子控制器需要通过自己的绑定了解 managedObjectContext。
  • 子控制器不能处于Entity模式,而是作为一个NSMutableDictionary类运行。
  • 最后,子控制器不准备其数据。它通过Content Set绑定从父级检索它。使用控制器键selection,以及连接到孩子的模型键路径。

。Brian 的回答和这个 MacResearch 教程都有助于确定我的错误(以及我正确的部分)。

0 投票
6 回答
2962 浏览

.net - Cocoa Core Data 新手操作指南

我是一大群热衷于尝试 Mac OS X 开发的未洗过的 .NET 开发人员之一。目前,我正在尝试找出 Cocoa 的各种元素,并且有点卡在 Core Data 上。

我注意到 Web 上可用的大多数文档和资源都涉及广泛的端到端教程,从模型、生成类、基于文档的 UI 等开始。似乎没有足够的注意力集中在每一位上,或者至少没有足够的例子。

有人可以为我指出正确的方向,无论是在线资料还是书籍,都可以给我各种细节的详细说明?也许我被困在 .NET 世界中,但我仍然认为数据访问层等方面。我想知道“CRUD”的基础知识,在设置持久存储、创建实体、编辑、保存方面存储等。只是基础知识,没有详细说明 UI。如果我可以对各个位进行单元测试,那就太好了。

我想我在这里试图进入正确的心态——那里的任何 .NET 开发人员都知道适合像我们这样正在研究 Cocoa 编程的人的阅读材料吗?

非常感谢,丹妮。

0 投票
0 回答
457 浏览

cocoa - 带有@sum子值的Cocoa绑定

我试图有一个表格列来显示使用 IB 的子值的总和。我不确定这是否可行。

所以我将我的核心数据绑定到一个表和一个“总销售额”列,该列应该是父对象的总销售额。

我正在尝试这样做:

IB中表列绑定的“模型键路径”中的“departments.@distinctUnionOfSets.sales.@sum.amount”。

有没有关于如何做到这一点的示例或教程。

0 投票
2 回答
1218 浏览

objective-c - Interface Builder 不会连接按钮,但教程说它应该可以工作

我一直在尝试学习 Core Data,浏览 Stack Overflow 上的问题后,我建议我在 Cocoa Dev Central ( Link ) 上尝试有关 Core Data 的教程。

到目前为止,本教程中的一切都很有意义,但是当我进入第 16 步时,它不允许我将 + 按钮连接到 Posts 数组控制器。我已经回去了,一路上每一步都检查了两次,三次检查,看不到哪里出了问题,但它仍然无法让我连接。我正在使用最新版本的 Xcode 和 Interface Builder(上周刚刚重新下载);这可能是版本兼容性问题吗?

附录

似乎问题在于我必须通过更改检查器中的类来更改名称,并且删除了数组控制器的默认操作。将类改回以NSArrayController恢复功能,但现在它在任何出现的地方都显示为“阵列控制器”,一旦我修复了作者和主题控制器,这似乎对 3 个正在运行的控制器产生了问题。

0 投票
1 回答
167 浏览

cocoa - 当代码通过而不是接口更改属性时通知可可绑定系统

我正在编写一个倒数计时器,而不是-[NSTextField setDoubleValue:secondsRemaining]在每个刻度上调用,我想secondsRemaining通过对象控制器将属性绑定到接口元素。

这样做的问题是secondsRemaining在每个刻度上由代码修改,而不是由界面修改,因此似乎没有广播更改。

我对这个问题有两个部分:

1)这是使用绑定的明智方式还是我应该坚持使用-[NSTextField setDoubleValue:]我的 App 控制器?

2)如果我确实使用绑定,如何通知接口该值已更改?

谢谢!

0 投票
3 回答
2824 浏览

cocoa - 什么是 Cocoa Touch 等价于 NSArrayController?

已经开始使用 Core Data,虽然我已经弄清楚如何在常规 Cocoa 应用程序中使用它,但它在 Cocoa Touch 中的工作方式似乎有点不同。在 Cocoa Touch 中,如何将实体绑定到诸如表格单元格之类的对象?