问题标签 [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.
cocoa - XCode 调试器中的这些错误是什么意思?
我在 XCode 中有 2 个错误,并试图弄清楚它们的含义。
第一个:
2009-06-30 18:56:27.998 Spark[4584:10b] Error setting value for key path filterPredicate of object <NSArrayController: 0x1482c0>[entity: group, number of selected objects: 1] (from bound object <NSSearchField: 0x143f20> with object ID 1387 in Nib named MainMenu.nib): [<NSManagedObject 0x1d8170> valueForUndefinedKey:]: the entity group is not key value coding-compliant for the key keyPath.
第2个:
他们的意思是什么?
objective-c - 如何从 NSCollectionViewItem 中的视图中获取代表对象?
我有一个在我的每个 CollectionView 项目中使用的视图。从我的角度来看,我有一个到 CollectionViewItem 的 IBOutlet,我已经在 Interface Builder 中连接了它。我想在我的视图代码中从代表对象(它是一个核心数据对象)访问一个值。这是我正在尝试做的一个示例 - 访问代表对象的序列值:
在 .h 文件中:
在 .m 文件中
我知道 seq 已填充,因为我使用代表对象.seq 键路径将它绑定到 IB 的 CollectionViewItem 视图中的标签,并且有效。
知道为什么当我尝试访问视图代码中 seq 的值时它返回 null 吗?
cocoa - 由绑定引起的NSWindowController循环依赖?
假设您有一个窗口 nib,它由加载 nib 的 NSWindowController 拥有。
NSWindowController 有一个 IBOutlet 绑定(通过 Interface Builder)到窗口上的 UI 控件。
由于绑定导致窗口控制器和控件之间存在牢不可破的循环依赖关系,因此您不能通过释放它来处置窗口控制器,这是真的吗?
你知道任何可能导致类似循环依赖的常见情况吗?
objective-c - 你可以手动实现 Cocoa 绑定吗?
我已经在为我自己的 NSView 子类实现绑定方面有所突破。它可以工作,但是从 nib 文件绑定到文件所有者时,保留周期会出现问题。在读了一点之后,我发现苹果几年前也有同样的问题,但是用一些神奇的无证类(NSAutounbinder)修复了它。
这里有一个关于保留周期问题的冗长讨论http://www.cocoabuilder.com/archive/message/cocoa/2004/6/12/109600。解决方法是在窗口控制器释放之前解除所有绑定,而不是在释放之前,在 windowWillClose: 之类的地方。这对我来说似乎是不必要的黑客攻击。
我的问题是:有什么方法可以使自定义绑定与 Apple 制作的绑定一样有效,而无需使用未记录的功能?我会以错误的方式解决这个问题吗?
更新 2:我找到了一个解决方案,它允许手动实现的绑定完全像 Apple 的绑定一样工作。它利用了未记录的 NSAutounbinder 类,而没有实际使用未记录的功能。我将在今天晚些时候发布解决方案。
更新:我试过使用exposeBinding:
,它似乎没有任何区别。但是,NSObject
执行bind:toObject:withKeyPath:options:
一半有效。它传播从绑定者到绑定者的更改(即从模型/控制器到视图),但不能以相反的方式工作。此外,虽然 bindee 显然正在被观察,但从observeValueForKeyPath:ofObject:change:context:
未被触发。
此处的示例项目:http ://www.tomdalling.com/wp-content/BindingsTest.zip
Apple 的文档表明,事实上,您必须重写bind:toObject:withKeyPath:options:
才能实现手动绑定。见这里:http: //developer.apple.com/documentation/Cocoa/Conceptual/CocoaBindings/Concepts/HowDoBindingsWork.html
旁注:我已经调查了未记录的 NSAutounbinder 是如何工作的,这就是我所知道的。
当为 NSWindowController 创建绑定时,绑定的对象实际上是一个 NSAutounbinder,它通过 -[NSWindowController _autounbinder] 从 NSWindowController 获取。NSAutounbinder 是 NSWindowController 对象的非保留代理。避免保留循环问题是非保留的。
当 -[NSWindowController release] 被调用并且 retainCount == 1 时,NSAutounbinder 将所有绑定解除绑定到自身。这确保了在对象被释放之前没有悬空指针。
objective-c - NSOutlineView 和 NSTreeController 示例
请给我一些关于如何在不使用核心数据的情况下将NSOutlineView与NSTreeController绑定一起使用的链接。
cocoa - 如何在 Quartz Composer 中为 NSArray 中的每个元素绘制形状?
我有一个已解析的 XML 文件,并将我想要的信息放入几个 NSArray 对象中。我希望能够在 QuartzView 中绘制它们(更好的吗?)以可视化数据。假设这些数组都应该包含相同数量的信息。我想要一个数组代表 x 轴,另一个代表 y。让石英作曲家绑定到我的数组代码需要足够长的时间,但我只能让它绘制一个具有唯一坐标的球体或一个具有相同坐标的每个索引的球体。所以基本上我需要帮助根据数组数据在 QC 中绘制图。代码看起来像这样:
提前致谢。
iphone - 将托管对象与 iPhone 上的控件同步的最优雅方式?
我正在尝试将 iPhone 应用程序从使用 SQLite 移植到 Core Data。
有没有办法直接将托管对象与操纵其值的控件同步,而不需要中间有控制器?注意:我可以做到这一点——这就是我现在正在做的;我正在寻找优雅、简单、快速的方法。
我正在翻阅文档,我刚刚开始感到不知所措。Bindings 上的文档似乎仅限于 Mac OS X,而不是 iPhone。我描述的内容在 iPhone 上是否可行?
谢谢。
objective-c - 如何正确使用 NSCollectionView 和 Outlets?
我正在拼命尝试使用插座连接将驻留在 NSCollectionView 中的 NSView 控件。集合视图使用 NSArrayController 提供。
我在一个单独的 NIB 文件中创建了 NSView,在 NSCollectionViewItem 的实现中我重写了 copyWithZone 来加载它:
我已经根据这个说明使用了这种方法。
不幸的是,这就是发生的事情:
NSView 看起来像这样:
NSCollectionView 驻留在 NSScrollView 中,并且滚动条设置为自动启用。但正如您所见,没有滚动条。
我真的不明白我需要做什么,所以 NSCollectionView 知道它的 NSView 的尺寸。
当我没有单独的 NIB 文件时,它以前工作过,但后来我无法从视图到项目建立插座连接:-(
objective-c - Cocoa 绑定:在 NSPopupButton 中将固定项与 ArrayController 绑定项结合起来
我正在尝试使用 NSPopupButton 制作颜色选择器,在底部我想要一个分隔符和一个“自定义...”选项。是否可以从数组中加载颜色,然后在底部添加分隔符和“自定义”项目?如果是这样,如何?
谢谢!
core-graphics - 可可绑定和 KVC 与 CGColorRef
我正在尝试将CGColorRef
我的一个对象上的 a 绑定到 a 的 " shadowColor
" 属性CALayer
。不幸的是,我无法弄清楚这一点 - 这可能非常简单!
CGColorRef 被实现为一个属性:
我的绑定也很简单:
我要解决的问题是valueForUndefinedKey:
- 我将如何实现这一点CGColorRef
?我目前正在获取样板:
我可以通过NSColor
在两端放置一个属性并在颜色更改时手动设置CALayer
“ shadowColor
”来解决此问题,但这似乎不优雅。