问题标签 [kvc]

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 回答
344 浏览

objective-c - 从嵌套在 NSArray 中的 NSDictionarys 获取特定的数据字段

我有一个嵌套字典数据的数组,如下所示:

我想从foo每本词典中挑选出来。想要的结果是这样的:

我已经尝试使用[myArray valueForKey @"@customFilterForFoo"],并在 NSDictionary 上实现了customFilterForFoofor 类别,但这最终得到*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFArray 0x6b81a10> valueForUndefinedKey:]: this class is not key value coding-compliant for the key customFilterForFoo.'

我怎么能做这样的事情?谢谢!

0 投票
3 回答
10863 浏览

iphone - 为什么 NSUserDefaults 不愿意保存我的 NSDictionary?

我正在使用 KVC 序列化一个NSObject并尝试将其保存到NSUserDefaultsAttempt to insert non-property value当我尝试存储我的NSDictionary.

以下是相关对象的属性MyClass

当需要保存 MyClass 时,它会出现在此处:

产生这个输出:

如您所见, 中的所有对象dict都是属性列表值,其所有键都是NSString*. 为了执行此操作,我缺少什么琐事?还是我应该放弃并使用writeToFile或类似的?

0 投票
3 回答
1896 浏览

c# - Apple 的键值编码 - 有人可以向 C# 开发人员解释为什么我需要这个以及它的作用吗?

在通过 Monotouch 切换到 iOS 开发之前,我使用了 ObjectiveC。自从我想到一件事“键值编码”(KVC)。我一直不明白它有什么用,它背后的魔力是什么。

据我了解,它只是名称和值的集合,例如 .NET 的NameValueCollection: 而不是设置anObject.Address = "An address Value"你会写anObject.Properties["Address"] = "An address value". 伟大的。所以呢?因为这对我来说似乎太容易了,所以我确信这不可能。

还是因为 .NET 有反射,因此不需要键值编码之类的东西?我可以获取“ anObject”的类型并使用反射循环其所有属性并查找名为“地址”的属性,然后使用反射设置值。这可能是KVC的类比吗?

我希望有人是 ObjC 和 C#/.NET 方面的专家,他可以向我解释好处是什么,以及它将如何转化为 .NET。请不要只将我指向 Apple 的文档。我知道这一切。我试图通过不了解 KVC 来了解我的编码生活中是否缺少某些东西?还是我可能在 .NET 中使用了类似的东西,但不知道如果我使用的是 ObjC,它会转化为 KVC?

0 投票
0 回答
320 浏览

cocoa - 可可,跨“多对多”关系绑定

我有一个模型,它本质上是三个实体:制造商 <---->> 模型 <---->> 汽车

制造商实体具有属性“名称”

模型实体具有属性“名称”

Car 实体具有“注册”和“里程”属性

我有一个表格视图,它在每一行显示汽车注册、里程、型号和制造商,很容易通过以下方式绑定:

我有另一个表格视图,我想在其中显示制造商和他们所有汽车的总里程。

所以我绑定的第一列是:

然后尝试绑定总里程时出现我的问题。我尝试通过以下方式访问它:

但这似乎不起作用:(我是否以完全错误的方式解决这个问题?或者我是否需要向我的制造商、模型或汽车类添加一些方法?

非常感谢

编辑:更多信息

奇怪地将一个单独的表绑定到

工作,虽然日志中仍然抛出一个错误: [<_NSFaultingMutableSet 0x1dbbb0> addObserver:forKeyPath:options:context:] is not supported。关键路径:@sum.milage

0 投票
2 回答
164 浏览

iphone - 如何使用字符串名称访问 UINavigationController

我的应用程序有 navController

在运行时我有 NSString *propertyName = @"navController";

我知道它是一种 UINavigationController

如何使用字符串名称访问 UINavigationController

我可能需要使用https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html

0 投票
0 回答
61 浏览

formatting - 使用KVC将数字格式化为两位小数?

下面的代码将滑块输出连接到窗口中的标签。连接有效。但是,我无法格式化数字显示。例如,我只想显示两位小数。我在任何地方都找不到示例。谢谢

0 投票
1 回答
1201 浏览

ios - Core Data 中的自定义访问器方法,为什么要使用 KVO?

一个典型的自定义访问器方法可以写成如下:

的意思就很清楚了setPrimitiveName。它允许您在没有 KVC 的情况下访问“原始”变量(防止访问器内部的运行循环)并设置传入的值。同样的观察可以应用于 getter。

从文档中可以清楚地看出setPrimitiveName禁用更改通知方法:willChangeValueForKey和对应方法。

现在我的问题如下:为什么需要将该方法包装在willChangeValueForKey:didChangeValueForKey:方法中?

阅读那里的核心数据编程是这样写的:

NSManagedObject 对建模属性禁用自动键值观察 (KVO) 更改通知,并且原始访问器方法不会调用访问和更改通知方法。对于未建模的属性,在 Mac OS X v10.4 Core Data 上也禁用了自动 KVO;在 Mac OS X v10.5 及更高版本上,Core Data 采用了 NSObject 的行为。

为什么我需要通知我已准备好访问密钥(访问器或实例变量),然后我已经完成了它?谁被告知?

希望我的问题很清楚。先感谢您。

0 投票
1 回答
351 浏览

iphone - 使用 NSMutableDictionary 的内容创建一个 NSManagedObject(可能用 NSCFString 代替数字)

我想用 NSMutableDictionary 和 Visa Versa 的内容创建一个 NSManagedObject。KVC 在 NSManagedObject 中无法正常工作,所以我无法使用

这里 managedObject 有一个属性“NSNumber *testKey”

我有来自 web 服务的响应,我必须将其存储在我的应用程序的 sqlite DB 中,为此我正在使用核心数据,所以我有名称为“地址”的实体,其属性包括城市、州等(所有字符串都带有邮政编码为诠释)。

我有一个类来解析 JSON 响应以获取字典,但我不知道如何从该字典中创建托管对象并保存到我的 sqlite 数据库中。

提前致谢,

约格什

0 投票
2 回答
1077 浏览

iphone - valueForKeyPath 的返回类型:?

这可能是我的试点错误,但我有点困惑为什么它不返回一个 int (因为那是由键路径标识的属性的类型)。valueForKeyPath: 是否返回一个对象,谁能解释一下。

.

0 投票
2 回答
185 浏览

objective-c - 了解简单的集合运算符

我正在阅读 Apple 的 Key Value Programming Guide。在主题简单集合运算符中,我读到:

以下示例返回交易中对象的交易金额平均值: NSNumber *transactionAverage=[transactions valueForKeyPath:"@avg.amount"];

我尝试编写一个可以使用上述内容的程序。以下是该程序的文件。我无法理解为什么上述内容对我不起作用。

事务.h

Transaction.m #import "Transaction.h"

事务数据库.h

事务数据库.m