问题标签 [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 回答
861 浏览

objective-c - KVC 兼容类

在 iOS 文档中读取 KVC Compliant 时。我试图测试一个类。是否符合 KVC 类?

但我有一些问题:

  1. 属性“Name”、“Age”没有设置器,并且该类仍在使用 KVC 且没有错误并且不会触发任何异常

  2. 当没有为属性创建 setter 时,编译器会做什么?它是否创建了 setter 和 getter 对?

    人.h

    人.m

    视图控制器.m

    /li>

当我按下按钮时,结果是:年龄:10,姓名:Duc Nguyen。我不明白在这种情况下该类如何使用 KVC?

0 投票
1 回答
113 浏览

ios - 观察自定义单元格

我正在尝试添加观察者(KVO)来观察我的自定义单元格。选择单元格后,我应该会收到事件通知。我的代码:

colMain 代表集合视图。我不太确定该怎么做,因为我没有 customCell 作为属性,否则它无法编译。有任何想法吗?

0 投票
1 回答
345 浏览

ios - 包含集合的集合的 NSPredicate 查询 (KVC)

编辑(我错过了一层细节):每个老师都有一系列的课程。(我也通过验证器运行了 JSON,所以它更容易阅读)假设以下 JSON:

即,我有一个学校数组,每个学校都包含一个教师数组,每个教师包含一个班级数组。(抱歉,如果 JSON 的确切格式不太正确;这是一个理论模型,因为由于 NDA 的要求,我无法透露真实的模型。实际模型是合理的。)

我需要使用 NSPredicate 和 KVC 对这个集合进行搜索,并获取所有名为“History”的类名。我尝试了几种不同的方式来执行它,但结果是空的。例如:

但我回来是空的。对于 KVC 可以执行的内容,我正在尝试的内容是否过于复杂?我是否需要遍历每个学校,然后遍历每个老师,然后才能搜索班级名称?或者,如果我想做的事情是可能的,我错过了什么?

谢谢。

0 投票
1 回答
907 浏览

java - 有效获取对象的属性或强制声明类属性

背景设置

我正在尝试创建一个用于在 Android 中访问和缓存 Web 服务数据的库,但偶然发现了一个问题。

我的库管理的所有对象都继承自一个基Entity类。任何派生类都Entity可以声明其他字段*或属性*。

基类负责返回Entity要从缓存(SQLite 或文件)或 Web 服务(REST 或 SOAP)读取的属性。在我当前的实现中,Entity该类使用反射执行此操作:它读取所有标有@Attribute注释的类字段名称。

问题

我在实现中遇到的问题如下:每次我Entity使用类似的函数请求所有属性static Set<String> getAttributes()时,该函数必须创建一个Set实现(目前HashSet用于快速查找)。

我想避免在Set<String>每次请求所有属性时分配和初始化 a 。

从我的角度来看,属性集特定于整个Entity类,而不是Entity对象。即:拥有class Customer extends Entity,所有Customer实例都具有完全相同的属性——每个实例都有名称、地址等。

我目前的尝试是static Set<String> attributes在每个类中声明一个扩展Entity并初始化它的类,Set使用类块中的反射,static如下所示:

给定要初始化的类,该类可以在该类及其基类Entity中查找所有标有注释的字段(例如,并将使用为该类声明的属性和从该类继承的属性填充集合)。@AttributeCustomer extends PersonPerson extends EntityCustomer.attributesCustomerPerson

我遇到的问题是,attributes可能没有为扩展的类定义一个集合Entity,我想在编译时强制执行。

我已经看到 Eclipse 中的接口是这样做的Serializable:当创建一个实现的类时Serializable,如果你的类没有声明一个[private] static final long serialVersionUID.

问题

如果一个类没有声明一个字段,有什么方法可以Serializable为我的类强制执行该行为Entity并显示警告或(更好)错误?

是否有不同的方法来返回Entity派生类的属性名称?

脚注

*我使用了field不应由库管理的attribute对象属性的术语和应由库管理的对象属性的术语(从 Web 服务或 SQLite/文件缓存中读取并保存在 Web 服务或 SQLite 中) /文件缓存)

编辑 1

基本上,我想要实现的是以一种有效的Entity方式获得一组 a 的属性*(见上面的脚注)。帮助类使用此列表将对象值存储在数据库中(CREATE TABLE查询可以从属性名称和类型推导出来)或发送到 Web 服务。

该库用于缓存来自 Web 服务的值,并用于将本地数据库(可能包含额外的用户输入值并且可能缺少对象的服务器更新值)与可通过 Web 服务访问的数据同步。它并不打算用通用访问器/修改器替换应用程序中每个字段访问器/修改器的使用。

这个概念被称为键值编码,被许多框架和库使用。例如,我通过 Google 搜索找到的使用 KVC 的前两个库示例是 Cocoa 和 Sproutcore。参考:Apple 开发人员文档Sproutcore wiki

KVC 也用于 Android 开发。BundleSQLiteCursorContentValues大量使用KVC。

0 投票
1 回答
358 浏览

ios - Objective-C KVC 改变属性的类型

我是 Objective-c 的新手。我正在写一个简单的方法将字典转换为对象来练习KVC知识:

还有一个简单的类:

并使用以下代码运行方法:

我的问题是,我通过 setValue:forKey: 给属性一个错误类型的值(应该是 NSDate 但实际上是 NSString)。但是为什么没有异常发生在运行时或 XCode 中,属性 dateTime 如何接受 NSString 值?

0 投票
0 回答
393 浏览

objective-c - UIViewController 子类的 title 属性无法通过 iVar 访问

在 UIViewSubClass 的初始化程序中,我使用 iVar 设置标题属性(避免初始化程序中推荐的设置器):

当我输入它时没有显示错误,但是当我编译或分析时,我得到一个链接器错误:

这是怎么回事?标题不符合 KVC 吗?

0 投票
1 回答
271 浏览

objective-c - ios,KVC,为什么不调用countOf当我调用 [[MyObject valueForKey:"MyArray" ] count]

.....................

我的步骤:

1)在 MyObject.h 中创建一个propertyfor 。NSArray* arrs

2) 在 MyObject.m

3) 测试代码

我的问题:

我希望它会自动调用countOfArrsobjectInArrsAtIndex:但是它没有。它所做的只是返回正常的 NSArray,以 1 和“abc”显示计数。

我没有找到任何有用的样本,或者我误解了医生所说的内容,不是吗?

我的语言不是英语,希望我没有提出任何雄心勃勃的问题。

0 投票
3 回答
9295 浏览

objective-c - 基于超类中的 NSInteger 属性使用 NSPredicate 过滤对象数组

我有以下设置:

我有一个包含类别实例(称为“类别”)的数组,我想根据它的 item_id 取出单个项目。这是我使用的代码:

这会导致以下错误:

*由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[valueForUndefinedKey:]:此类与键 item_id 的键值编码不兼容。”

我该如何解决这个问题,我做错了什么?属性已合成,我可以在 Category 实例上成功访问和设置 item_id 属性。

0 投票
1 回答
1917 浏览

ios - iOS键值编码

假设我们有一个 person 类型的对象,它有一个名为 name 的属性。

这非常有效。我想做的是深入挖掘。假设班级人员有另一个名为 address 的属性,它属于 Address 类,并且有一个名为 zipcode 的字段。

有没有比这更简单的方法来分配该人的邮政编码?也许更干净更清晰的东西?

0 投票
0 回答
284 浏览

objective-c - setValuesForKeysWithDictionary 的参数版本

Objective-C 中是否有一种简单的方法可以将方法中的所有参数设置为类的属性?类似于 setValuesForKeysWithDictionary,但更像“setValuesForKeysWithArguments”?

假的例子: