首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >KVC 在 iOS 开发中的应用

KVC 在 iOS 开发中的应用

作者头像
keyle
发布2024-11-01 12:11:04
发布2024-11-01 12:11:04
39500
代码可运行
举报
文章被收录于专栏:礼拜八不工作礼拜八不工作
运行总次数:0
代码可运行

在 C# 里我们常用 .net reflect 类库配合typeof/getType来反射设置函数与字段等等。在iOS里也有这样的功能,比C#的门槛低的多。只要你合乎规范的定义函数与属性字段,就能方便的使用。

使用KVC

下面的函数 我将接通过KVC的接口 setValue forKey && setValue forKeyPath ,来设置属性 与 调用方法。

代码语言:javascript
代码运行次数:0
运行
复制
#import <Foundation/Foundation.h>
#import "Foo.h"
#import "Bar.h"

int main(int argc, const char * argv[]) {
    Foo* foo = [[Foo alloc]init];
    foo.bar = [[Bar alloc]init];

    
    [foo setValue:@"blah blah" forKey:@"stringOnFoo"];
    [foo setValue:@"testforkeyle" forKeyPath:@"bar.stringOnBar"];
    [foo valueForKeyPath:@"Log"];//Just Test log 直接访问了实例方法
    
    
    NSLog(@"%@",foo.bar.stringOnBar); //testforkeyle
    NSLog(@"%@",foo.stringOnFoo); //blah blah
    return 0;
}

使用KVC在便利数组上尤为方便,下面是使用@sum函数直接给数组的price属性求和。

代码语言:javascript
代码运行次数:0
运行
复制
[foo.bar.array valueForKeyPath:@"@sum.price"];

KVC的其他函数

代码语言:javascript
代码运行次数:0
运行
复制
//对于KVC的一些命令 ,如果要操作 NSArray 之类的字典可以方便的调用。类似C#的Linq for Object
@avg
@count
@max
@min
@sum
@unionOfArrays/@distinctUnionOfArrays   //返回一个包含所有数组的数组 / 返回一个不重复的集合元素
@unionOfSets/@distinctUnionOfSets       //返回一个包含所有集合的集合 / 返回一个不重复的集合元素
@unionOfObjects/@distinctUnionOfObjects //返回一个包含所有元素的数组 / 返回一个不重复元素的数组

使用要求

  1. 骆驼命名法,不能数字开头
  2. 不能包含空格
  3. 键必须是ASCII编码的
  4. 使用默认的get/set
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 礼拜八不工作 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用KVC
  • KVC的其他函数
  • 使用要求
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档