KVC(Key-Value Coding)

KVC

简介:它允许开发者使用键(Key)来间接地访问对象的属性,而不需要直接调用特定的存取方法。

特点:
使用键访问属性:KVC 允许通过键(字符串)来获取和设置对象的属性值,即使这些属性是私有的。这在访问和修改对象属性时提供了一种简洁的方式。

键路径(Key Path):除了单个键外,KVC 还支持键路径,即由多个键组成的路径,用于访问嵌套对象的属性。比如,可以通过键路径 person.address.city 访问嵌套在 person 对象中的 address 对象的 city 属性。

集合操作:KVC 支持对集合(如数组和字典)进行操作,比如通过键值访问数组中的元素,或者动态地向数组中添加、删除元素。

可用于 NSObject 子类:KVC 可以应用于继承自 NSObject 的类,但在 Swift 中也可以应用于符合 NSObjectProtocol 协议的非 NSObject 类型。


基本操作:

获取属性值:使用 value(forKey:) 方法通过键获取属性值。

设置属性值:使用 setValue(_:forKey:) 方法通过键设置属性值。

键路径访问:通过键路径访问嵌套对象的属性。

集合操作:对于数组,可以使用 value(forKeyPath:) 方法获取数组中指定键的所有元素组成的新数组。对于字典,可以使用 value(forKey:) 获取指定键的值。


示例:

class Person: NSObject {
    @objc var name: String
    @objc var age: Int
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

let person = Person(name: "Alice", age: 30)

// 使用KVC获取属性值
let personName = person.value(forKey: "name") as? String
print("Person's name is \(personName ?? "Unknown")")

// 使用KVC设置属性值
person.setValue("Bob", forKey: "name")
print("Person's new name is \(person.name)")

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值