问题标签 [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.
objective-c - KVC 兼容类
在 iOS 文档中读取 KVC Compliant 时。我试图测试一个类。是否符合 KVC 类?
但我有一些问题:
属性“Name”、“Age”没有设置器,并且该类仍在使用 KVC 且没有错误并且不会触发任何异常
当没有为属性创建 setter 时,编译器会做什么?它是否创建了 setter 和 getter 对?
人.h
人.m
视图控制器.m
/li>
当我按下按钮时,结果是:年龄:10,姓名:Duc Nguyen。我不明白在这种情况下该类如何使用 KVC?
ios - 观察自定义单元格
我正在尝试添加观察者(KVO)来观察我的自定义单元格。选择单元格后,我应该会收到事件通知。我的代码:
colMain 代表集合视图。我不太确定该怎么做,因为我没有 customCell 作为属性,否则它无法编译。有任何想法吗?
ios - 包含集合的集合的 NSPredicate 查询 (KVC)
编辑(我错过了一层细节):每个老师都有一系列的课程。(我也通过验证器运行了 JSON,所以它更容易阅读)假设以下 JSON:
即,我有一个学校数组,每个学校都包含一个教师数组,每个教师包含一个班级数组。(抱歉,如果 JSON 的确切格式不太正确;这是一个理论模型,因为由于 NDA 的要求,我无法透露真实的模型。实际模型是合理的。)
我需要使用 NSPredicate 和 KVC 对这个集合进行搜索,并获取所有名为“History”的类名。我尝试了几种不同的方式来执行它,但结果是空的。例如:
但我回来是空的。对于 KVC 可以执行的内容,我正在尝试的内容是否过于复杂?我是否需要遍历每个学校,然后遍历每个老师,然后才能搜索班级名称?或者,如果我想做的事情是可能的,我错过了什么?
谢谢。
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
中查找所有标有注释的字段(例如,并将使用为该类声明的属性和从该类继承的属性填充集合)。@Attribute
Customer extends Person
Person extends Entity
Customer.attributes
Customer
Person
我遇到的问题是,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 开发。Bundle
,SQLiteCursor
并ContentValues
大量使用KVC。
ios - Objective-C KVC 改变属性的类型
我是 Objective-c 的新手。我正在写一个简单的方法将字典转换为对象来练习KVC知识:
还有一个简单的类:
并使用以下代码运行方法:
我的问题是,我通过 setValue:forKey: 给属性一个错误类型的值(应该是 NSDate 但实际上是 NSString)。但是为什么没有异常发生在运行时或 XCode 中,属性 dateTime 如何接受 NSString 值?
objective-c - UIViewController 子类的 title 属性无法通过 iVar 访问
在 UIViewSubClass 的初始化程序中,我使用 iVar 设置标题属性(避免初始化程序中推荐的设置器):
当我输入它时没有显示错误,但是当我编译或分析时,我得到一个链接器错误:
这是怎么回事?标题不符合 KVC 吗?
objective-c - ios,KVC,为什么不调用countOf当我调用 [[MyObject valueForKey:"MyArray" ] count]
.....................
我的步骤:
1)在 MyObject.h 中创建一个property
for 。NSArray* arrs
2) 在 MyObject.m
3) 测试代码
我的问题:
我希望它会自动调用countOfArrs
,objectInArrsAtIndex:
但是它没有。它所做的只是返回正常的 NSArray,以 1 和“abc”显示计数。
我没有找到任何有用的样本,或者我误解了医生所说的内容,不是吗?
我的语言不是英语,希望我没有提出任何雄心勃勃的问题。
objective-c - 基于超类中的 NSInteger 属性使用 NSPredicate 过滤对象数组
我有以下设置:
和
我有一个包含类别实例(称为“类别”)的数组,我想根据它的 item_id 取出单个项目。这是我使用的代码:
这会导致以下错误:
*由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[valueForUndefinedKey:]:此类与键 item_id 的键值编码不兼容。”
我该如何解决这个问题,我做错了什么?属性已合成,我可以在 Category 实例上成功访问和设置 item_id 属性。
ios - iOS键值编码
假设我们有一个 person 类型的对象,它有一个名为 name 的属性。
这非常有效。我想做的是深入挖掘。假设班级人员有另一个名为 address 的属性,它属于 Address 类,并且有一个名为 zipcode 的字段。
有没有比这更简单的方法来分配该人的邮政编码?也许更干净更清晰的东西?
objective-c - setValuesForKeysWithDictionary 的参数版本
Objective-C 中是否有一种简单的方法可以将方法中的所有参数设置为类的属性?类似于 setValuesForKeysWithDictionary,但更像“setValuesForKeysWithArguments”?
假的例子: