问题标签 [key-value-coding]

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 投票
8 回答
28816 浏览

iphone - iPhone 应用程序因 NSUnknownKeyException setValue:forUndefinedKey 崩溃:

我正在编写我的第一个 iPhone 应用程序,所以我还没有弄清楚调试的方法。本质上,我的应用程序会显示图像,并且在触摸时会播放短促的声音。在 XCode 中编译和构建项目时,一切都构建成功,但是当应用程序在 iPhone 模拟器中运行时,它会崩溃。

我收到以下错误:

kramerImage 这里是我用作背景的图像。

我不确定 NSUnknownKeyException 是什么意思,或者为什么该类不符合键的键值编码。

0 投票
1 回答
2923 浏览

cocoa - 在 Cocoa 中实现 KVO/Bindings-Compliant 桥接模式

我正在尝试在可可中实现一个简单的对象桥,其中桥对象充当某个任意其他 NSObject 实例的 kvo/bindings-compliant 下降。

这是我的问题(下面的代码中有更多详细信息):

桥接对象充当 Person-Object 的一个插入点,具有一个名为name的 NSString* 属性和一个 Address* 属性address。绑定到 Bridge 的 keyPath“名称”或“地址”效果很好。当将某个对​​象绑定到桥的 keyPath“address.street”并且为 Person 的address属性设置了一个新的 Address-Object 时,麻烦就开始了。这会导致与 KVO 相关的异常如下所示:

Cannot remove an observer <NSKeyValueObservance 0x126b00> for the key path "street" from <Address 0x12f1d0> because it is not registered as an observer

即使网桥注意到“地址”属性的变化并发出 willChangeValueForKeyPath/didChangeValueForKeyPath 元组,也会发生这种情况。

下面的代码产生了问题。它是自包含的 Objective-C 代码,可以保存在文件“BridgeDemo.m”中并编译运行

如果你知道这个问题的解决方案,或者可以为我提供更好的方法来解决同样的问题,那么你会让我成为一个非常快乐的程序员!

BridgeDemo.m:

0 投票
3 回答
1103 浏览

cocoa - 可可绑定问题;绑定表列不显示任何数据,控制台中没有错误

我在将 Cocoa 项目从手动同步的接口模型转换为绑定模型时遇到了麻烦,因此我不必担心接口胶水代码。

我遵循了 CocoaDevCentral Cocoa Bindings 教程,以确保我已经涵盖了所有基础,但事情并没有正常工作。我有一个主从界面,但我什至无法让界面的主部分正常工作。主列中没有显示任何数据,即使我已经设置了类似于教程中显示的绑定模型。我已经确保我所有的控制器和对象都有-(id)key并且-(void)setKey:(id)key方法,以便它们与绑定兼容,我在我的 nib 中创建了一个 ControllerAlias 对象,将其连接到我的控制器,创建了一个 NSArrayController 绑定到 ControllerAlias 连接到的类中的 NSMutableArrays 之一,确保设置数组中包含的对象类型,然后我将表列绑定到 NSArrayController。

我在控制台中没有收到任何错误,设置NSBindingDebugLogLevel为 1 也不会产生任何错误,这将帮助我找出问题所在。

为了确保一切正常,我唯一能想到的另一件事是检查连接到 NSArrayController 的 NSMutableArray 中是否确实包含某些内容,并且确实存在。

有什么建议么?我应该检查 Cocoa 绑定还有哪些其他典型的陷阱?

0 投票
1 回答
309 浏览

cocoa - 奇怪的绑定问题

我正在尝试使用带有绑定的浏览器视图来表示一些数据,但我收到一条错误消息:

如 NSLog 输出所示,这种情况甚至发生awakeFromNib在我的应用程序控制器中调用之前,即使我知道 BillingCode 对于 displayString 是 KVC 兼容的。

它似乎与我的树控制器->属性->对象控制器下为“类”设置的值有关,好像我更改了该类的名称,错误消息中的名称也随之变化。awakeFromNib奇怪的是,据我所知,此时内容数组中不应该有任何对象,因为在被调用之前我不会添加它们。

0 投票
7 回答
35273 浏览

cocoa - 观察 NSMutableArray 以进行插入/删除

一个类具有类型为 NSMutableArray 的属性(和实例 var),并带有合成访问器(通过@property)。如果您使用以下方法观察此数组:

然后像这样在数组中插入一个对象:

发送observeValueForKeyPath... 通知。但是,以下确实发送了正确的通知:

这是因为mutableArrayValueForKey返回一个负责通知观察者的代理对象。

但是合成的访问器不应该自动返回这样一个代理对象吗?解决这个问题的正确方法是什么——我应该编写一个只调用的自定义访问器[super mutableArrayValueForKey...]吗?

0 投票
5 回答
1009 浏览

cocoa - 可可中不区分大小写的KVC?

对于我正在考虑使用的特定方法,我将不胜感激。场景如下。

我有一个对象(我们称之为 MObject),它有许多属性,比如 x 和 y 坐标、高度和宽度。这些属性是根据 KVC 指南命名的(MObject.x;MObject.height 等)。我的下一个任务是读入描述这个 MObject 的 XML 文件。不幸的是,XML 元素的名称不同——X 和 Y、高度和宽度(注意大写)。

理想情况下,XML 元素将与 MObject 的属性相匹配。在这种情况下,我可以使用 KVC 并避免一大堆代码:

解决此问题的一种方法是使用不区分大小写的键。我会从哪里开始呢?还有其他更好的解决方案吗?

建议非常感谢。

0 投票
1 回答
3302 浏览

cocoa-touch - 如何将键值对附加到 iPhone 上的 UIView?

当我开始 iPhone 开发时,我在某处读到可以将键值对附加到 UIView。我知道所有 UIView 都可以用作字典来存储您可能想要附加到它们的任何数据,以防止不必要的子类化。但是,我到处搜索以找到参考,并试图徒劳地实现自己的行为。

我已经尝试过诸如:

但这似乎不起作用。我认为上面的代码所做的是尝试将值 @"hello" 分配给属性 @"world" - 这不是我想要的。

我想要实现的目标是可能的吗?

在这里的任何帮助将不胜感激。

谢谢!

缺口。

0 投票
3 回答
232 浏览

cocoa - 使用KVC生成SQL?

我想知道是否可以使用 KVC 生成 SQL。我正在做一个轻量级的 ORM;我想做这样的事情(伪代码):

并得到:

这在Objective-C中可能吗?

0 投票
4 回答
1819 浏览

cocoa - 如何使 NSTokenField 的值绑定提供 NSString?

我已经用 an 替换了NSTextFieldanNSTokenField以便我可以执行一些自动完成。的值NSTextField绑定到NSString控制器类的属性。现在我已将 更改NSTextField为 anNSTokenField值已更改为NSArray

如何使NSTokenField值绑定成为一个NSString

将值从 an 更改NSString为 anNSArray似乎是糟糕的 OO 设计。我认为子类应该能够在不修改子类的情况下替换超类。

0 投票
3 回答
11853 浏览

cocoa - Key-Value-Observing a to-many relationship in Cocoa

我试图让键值观察为 NSMutableArray 工作。下面是观察类 MyObservee 的 .h 文件:

MyObserver 类实现了 observeValueForKeyPath:ofObject:change:context:。这是我添加观察者的方法:

为什么 addObject: 消息没有作为 someArray 键路径的更改触发?我有一种感觉,这里有一些我不完全理解的东西。