问题标签 [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.
cocoa - 观察 NSTreeController 的绑定 CoreData 实体以进行插入/删除
我正在创建自己的可绑定自定义树视图。为此,我想观察 NSTreeController 以更新其项目的多对关系。NSTreeController 绑定到 CD 托管对象上下文。每个深度级别都有自己的 CD 实体,带有 parent/children/isLeaf 属性。我需要在视图中保持相同的层次结构(以及子项的顺序)。如果插入了某些东西,我将开始观察它的 children 属性。我当然需要知道新插入对象的索引路径。
我想确切地知道插入/删除了什么,所以我可以开始观察它是否插入/删除了它的孩子。据我了解,执行此操作的标准方法是在observeValue:forKey ...中查看“更改” NSDictionary,但更改为NULL。
我知道这是一个长期存在的错误,但有一些好的解决方法吗?我已经看到一些示例的视图保存数组,然后当模型更改时,您比较差异。树视图更复杂。这种方式也会浪费内存和 CPU 周期。我有一种正在测试的解决方法。它只是一种作品,所以我不会描述它。
python - 具有范围的 pyobjc 索引访问器方法
根据 KVC 指南,我正在尝试在 Python 中为我的模型类实现索引访问器方法。出于性能原因,我想使用可选的 ranged 方法一次加载多个对象。该方法需要一个指向 C 数组缓冲区的指针,我的方法需要将对象复制到该缓冲区中。我已经尝试过类似以下的方法,但它不起作用。我该如何做到这一点?
编辑: Apple 移动所有文档后,我终于找到了类型编码参考。读完之后,我尝试了这个:
但这似乎也不起作用。第一个参数应该是指向 C 数组的指针,但长度直到运行时才知道,所以我不知道如何构造正确的类型编码。我'v@:N^[1000@]@'
只是想看看,那也没用。
我的模型对象绑定到驱动表视图的 NSArrayController 的 contentArray。它似乎根本没有调用此方法,可能是因为它期望的签名与桥提供的签名不同。有什么建议么?
iphone - KVC 生成的数组超出范围
我正在尝试从其他对象的层次结构中创建对象数组,如下所示:
代码1:
代码2:
第一个代码片段完美运行,返回一个人名数组。相反,第二个返回一个包含正确人数姓名的数组,但是当我在 XCode 中调试代码时,它们显示为“超出范围”。当我尝试访问其中一个时,应用程序以以下方式终止:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“*** -[NSCFSet objectAtIndex:]:无法识别的选择器发送到实例 0x72e0620”
列表,如果重要的话,人是核心数据管理的对象..我做错了什么???
objective-c - KVC:如何测试现有密钥
我需要一些关于 KVC 的帮助。
关于操作环境的几句话:
1)iPhone连接(客户端)到一个webService来获取一个对象,
2) 我正在使用 JSON 传输数据,
3)如果客户端具有完全相同的对象映射,我可以从 JSON 遍历 NSDictionary 以将数据存储在永久存储(coreData)中。为此,我正在使用此代码片段(假设所有数据都是 NSString):
现在我的问题....
4)如果服务器使用 1 个新属性实现对象的新版本会发生什么如果我将数据传输到客户端并且客户端不在保存版本级别(这意味着仍在使用“旧”对象映射)我'将尝试为不存在的键分配一个值...我将收到以下消息:
实体“myOldObject”不符合键“myNewKey”的键值编码
你能建议我如何测试对象中键的存在吗?如果键存在,我可以继续进行值更新以避免错误消息?
对不起,如果我在上下文解释中有点混乱。
谢谢
达里奥
objective-c - 使用 valueForKeyPath 获取数组元素
有什么方法可以访问NSArray
元素valueForKeyPath
吗?例如,谷歌的反向地理编码服务返回一个非常复杂的数据结构。如果我想得到这座城市,现在我必须把它分成两个电话,像这样:
只是想知道是否有办法将objectAtIndex:
调用硬塞到valueForKeyPath
字符串中。我尝试了类似 @"Placemark[0].address" 的 javascript-esque 公式,但没有骰子。
iphone - 如果键以@符号开头,则在 NSDictionary 上使用 valueForKeyPath?
我想valueForKeyPath
在我的 上使用NSDictionary
,但问题是其中一个键是以 @ 符号开头的字符串。我无法控制密钥的命名。
我在尝试创建密钥路径时遇到了问题,因为我遇到了格式异常,即使在尝试转义 @ 符号时也是如此:
这工作正常:
然而,这些都不起作用:
有任何想法吗?
谢谢,
麦克风
objective-c - ObjC 中的#typedef 和 KVC
我有一个看起来像这样的类:
其中 NSNumberBool 是 typedef:
我拥有创建 prop1 和 prop2 属性所需的所有 @property 和 @synthesize 声明。
在我尝试通过 [myProperties valueForKey:@"prop2"] 访问 prop2 之前,一切都编译并运行良好。这给了我一个“类不符合键值”错误。但是,许多类似的调用都可以正常工作:
这是怎么回事,我该如何解决?
谢谢,
java - Java的“键值编码”
在 Apple 的 Objective-C 中有一种叫做“键值编码”的东西,它允许你使用类似于文件系统路径的字符串来遍历对象图。有一个非正式协议(即接口)允许对象根据他们被要求的“键”返回值。例如,默认是返回由键命名的字段的值,而像 NSDictionaries 这样的关系集合可以实现更有趣的行为。
伪代码示例:
Java有这样的东西吗?这很容易实现,但我想我会先看看。
iphone - NSDecimal、NSDecimalNumber、CFNumber 之间的正确选择是什么?
我已经阅读了很多关于 NSDecimal、NSNumber、NSNumberDecimal、CFNumber 的内容……对我来说它开始成为一种丛林。
基本上,我正在尝试创建一个简单的模型类来处理简单的计算,比如这个:
我想用它们的名字作为字符串来访问这些方法和设置器,因为我计划有很多像这样的其他类,而且我只保留一个字段列表来进行键值编码。
我知道这是不可能的,performSelector:
它将返回一个对象,因此capitalizedAmount
应该返回一个对象。我NSInvocation
在 comp.lang 上的 Objective-C 常见问题解答中阅读了有关内容和相关部分。
我也知道我应该使用NSDecimalNumber
,但有两件事我想知道:
- 对于更复杂的类(只有这种财务计算,在 UITableView 中显示),内存开销和性能损失是否可以接受?我在C方面没有太多背景...
- 使用类似的功能是不是太挑剔和复杂了
decimalNumberByAdding:
?使用 Python,很容易定义__add__
对对象使用运算符。我应该从 获取浮点值NSDecimalNumber
,然后进行计算并返回包含在 中的结果NSDecimalNumber
吗?你会如何处理这个问题?
我正在寻找一个简单而漂亮的解决方案!
只是同一领域的另一个问题:CFBoolean
对象包装器是否适用BOOL
于 iPhone Core Foundation?
非常感谢您的帮助!
cocoa - Cocoa Key Value Bindings:Controller Key的各种选项的解释是什么?
当我使用 Interface Builder 将控件绑定到 NSArrayController 时,绑定检查器的“Controller Key”字段下有多种选项。
我了解“arrangedObjects”是什么,并且我半了解什么是“选择”,但我希望看到对所有选项以及何时使用每个选项的非常好的解释。该列表包括:selectionIndexes、selectionIndex、selectedObject、sortDescriptors 等。我一直无法找到对这些选项的很好解释。
我在使用绑定到目标 > 选择的按钮时遇到问题,所以我希望对这些控制器键有更深入的了解可以帮助我调试我的问题。
谢谢!!!