首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编码篇-精析OC史诗级技术之KVC

(2)更重要的是KVC 有自动装箱(自动类型转换)的功能,我们不需要去转换类型了。由于开发过程中数据领域是字符串的天下,所以这个自动装箱的功能的确是极好的。...(1)简单集合操作符 @count: 返回一个值为集合中对象总数的NSNumber对象。...@sum: 首先把集合中的每个对象都转换为double类型,然后计算其总,最后返回一个值为这个总和的NSNumber对象。...@avg: 把集合中的每个对象都转换为double类型,返回一个值为平均值的NSNumber对象。 @max: 使用compare:方法来确定最大值。...可见,只要写好实现,完全可以自定义一些比较有用的Collection Operators 字典转模型 下面是常见的使用方法,目前有很多KVC 和 Runtime一起使用达到Json数据自动转模型的方法,

1.3K20

iOS_Tagged Pointer是什么,结构

原理 将指针(8字节)拆成两部分:一部分直接保存数据,另一部分作为标记(这是一个特别的指针,不指向任何一个地址) (拿一个整数来说,4个字节所能表示的有符号整数就可达20 多亿,注:2^31=2147483648...,如:NSString、 NSNumber、NSData 指针值不再是地址,而是真正的值。...1-3个bit位:类标志位 (该例是:011转为十进制是3,对应OBJC_TAG_NSNumber) 最低位:数据类型(该例是2,转换为二进制是0010,也就是2,对应int) 剩下中间的位:存储数据(...该例是00000000000001,对应num0的值1) NSString NSString *str1 = [NSString stringWithFormat:@"0"]; NSString *str2...(该例是1,表示是Tagged Pointer) 倒数1-3个bit位:类标志位 (该例是010,转换十进制是2,对应OBJC_TAG_NSString) 最低位:字符长度(该例是1,转换为二进制是0001

45530
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    利用Runtime实现简单的字典转模型

    前言 我们都知道,开发中会有这么一个过程,就是将服务器返回的数据转换成我们自己定义的模型对象。当然服务器返回的数据结构有xml类型的,也有json类型的。本文只讨论json格式的。...我们可以通过写一个框架自动帮我们实现字典转模型,大致思路就是: 遍历模型中的属性,然后拿到属性名作为键值去字典中寻找值; 找到值后,根据模型的属性类型将值转化成正确的类型; 给属性名赋值。...找到值后,根据属性类型将值转化成正确的类型 现在已经完成了第一步,并且拿到了属性名,但是数据类型还需要我们进一步截取,截取方法如下: for (int i=0; i值后将值的类型转换为属性对应的数据类型。...JSON字符串转模型 定义一个json字符串转成模型: #pragma mark - JSON字符串转模型 void keyValues2object1(){ // 1.

    1.9K60

    利用Runtime实现简单的字典转模型

    前言 我们都知道,开发中会有这么一个过程,就是将服务器返回的数据转换成我们自己定义的模型对象。当然服务器返回的数据结构有xml类型的,也有json类型的。本文只讨论json格式的。...我们可以通过写一个框架自动帮我们实现字典转模型,大致思路就是: 遍历模型中的属性,然后拿到属性名作为键值去字典中寻找值; 找到值后,根据模型的属性类型将值转化成正确的类型; 给属性名赋值。...找到值后,根据属性类型将值转化成正确的类型 现在已经完成了第一步,并且拿到了属性名,但是数据类型还需要我们进一步截取,截取方法如下: for (int i=0; i值后将值的类型转换为属性对应的数据类型。...JSON字符串转模型 定义一个json字符串转成模型: #pragma mark - JSON字符串转模型 void keyValues2object1(){ // 1.

    1.2K30

    iOS-Foundation框架中常用的类

    当在内存中创建1个字符串对象以后,这个字符串对象的内容就无法更改,当我们重新为字符串指针初始化值的时候,并不是修改原来的字符串对象,而是重新的创建1个字符串对象并将这个字符串对象的地址重新复制给字符串指针变量...将字符串中第1个参数替换为第2个参数.原来的指针指向字符串的内容是不会变的,新串是以方法的返回值返回的.如果串1中有多个相同的被替换的串,会全部替换。...这个方法还可以做删除串中的一些字符. 原理: 将想要删除的字符替换为@""即可。 字符串数据转换为其他的类型....NSNumber 因为NSArray和NSDictionary都无法存储基本数据类型,所以NSNumber就是用来将基本数据类型转化为对象的。...*)stringFromDate:(NSDate *)date; //将日期类型换换为字符串 - (NSDate *)dateFromString:(NSString *)string;//将字符串转换为日期对象

    1.7K100

    iOS:JSON转OC属性小工具 原

    iOS:JSON转OC属性小工具       在iOS开发中,只要有网络模块,就需要数据模型的编写。...无论使用什么第三方的JSON数据解析框架,我们都需要手动来编写数据模型类,这是一个十分机械性的体力活,本篇博客将介绍一个配合与JSONModel使用的自动生成属性脚本(支持类的嵌套)。      ...本脚本采用的语言为JavaScript,采用JavaScript编写有两个好处,首先其可以在node环境运行,可以十分方便的操作文件,使用它可以直接将JSON文件转换成OC数据模型类。...continue; } c.property.push("@property(nonatomic,strong)"+type+"*"+key+";"); } } //获取要转换的类型...命令后面所跟的参数为JSON文件的路径,JSON文件内容如下: { "code": 0, "message": "", "result": { "aid": "be3bdab8-fbf5

    1.1K20

    iOS - - JSON 和 XML解析

    JSON中挖掘出具体数据,得对JSON进行解析 JSON OC 大括号{} NSDictionary 中括号[] NSArray 双引号"" NSString 数字 NSNumber true/false...NSNumber null NSNull JSON 转换为 OC数据类型 3.在iOS中,JSON的常见解析方案有4种 ①第三方框架:JSONKit、SBJson、TouchJSON(性能从左到右,...数据 /* 第一个参数:需要转换为JSON数据的OC对象 第二个参数:毫无意义 NSJSONWritingPrettyPrinted:对转换之后的JSON进行排版 */ + (NSData...和length属性的值 1.XML的解析方式有2种 DOM:一次性将整个XML文档加载进内存,比较适合解析小文件 SAX:从根元素开始...// 3.从根元素中获取所有子元素 NSArray *elements = [rootElement elementsForName:@"video"]; // 4.将子元素中的属性转换为模型

    2.3K80

    Java 使用Jackson处理json 字符串值反序列化类型为集合时的报错处理 单个值自动转集合

    在处理Json字符串时 有时会遇到一种情况: JSON字符串中的某一项的值是字符串类型,但想要反序列化为一个集合类型 举例: {"i":1,"list":"astr","str":"em"} 这样一个字符串...解决办法就是在使用之前 为objectMapper增加一项自定义的错误处理器,并在处理这个错误时将list 实例化,将对应的值加入该list 代码: /** * 当json字符串中值为string类型...字符串 转 目标为数组 元素为字符串的情况 if (token == JsonToken.VALUE_STRING && targetType.isCollectionLikeType(...)) { return deserializeString(targetType, parser); } //处理单个json对象 转 目标为数组...result.add(o); } return result; } } 除了简单字符串转list,还可以处理object的json 转object对应list

    3.5K10

    Mantle--国外程序员最常用的iOS模型&字典转换框架

    目前我们可以想到 直接解析JSON数据字典,然后展现给UI 将JSON数据转换为模型,在赋值给UI 关于1,弊端有很多,可以参考我的这篇文章:在iOS开发中使用字典转模型,现在假设我们选择了2,我们大致会定义下面的...无法使用服务器的新数据来更新这个 GHIssue 无法反过来将 GHIssue 转换成 JSON 对于GHIssueState,如果枚举改编了,现有的归档会崩溃 如果 GHIssue 接口改变了,现有的归档会崩溃...JSONKeyPathsByPropertyKey可以实现模型和JSON的自定义映射。 JSONTransformerForKey可以对JSON和模型不同类型进行映射。...甚至有经验的人在使用Core Data时也会犯错,并且这些问题框架是无法解决的。 如果你想获取JSON对象,Core Data需要做很多工作,但是却只能得到很少的回报。...但是,如果你已经在你的APP里面使用了Core Data,Mantle将仍然会是你的API和你的managed model objects之间一个很方便的转换层。

    1.7K60

    OC知识--Foundation框架详尽总结之『数字、结构体、日期、文件类』

    NSNumber介绍 NSArray\NSDictionary中只能存放OC对象,不能存放int\float\double等基本数据类 如果需要使用将基本数据的值作为对象使用,比如说放进数组或字典中,需要先将基本数据类型包装成...OC对象,可使用NSNumber类 NSNumber可以根据基本数据的类型创建对象,这样就可以间接将基本数据类型存进NSArray\NSDictionary中 2....; // 将基本数据类型转换为对象类型 NSNumber *ageN = [NSNumber numberWithInt:age]; NSNumber *numberN = [NSNumber numberWithDouble...(BOOL)isEqualToNumber:(NSNumber *)number; 示例 NSNumber *ageN = @10; // 2.将对象类型转换为基本数据类型 int age = [ageN...*time1 = @"2016-06-23 12:18:15"; NSString *time2 = @"2016-06-28 10:10:10"; // 将时间转换为date NSDateFormatter

    59740

    KVC原理与数据筛选

    Tech 导读 通过分析Foundation框架中的KVC部分并结合案例分析KVC原理,解释为什么属性为简单数据类型的时候可以设置其值为字符串类型且不会崩溃的真实原因。...02 什么是KVC 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值...理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定...其定义如下:之所以有文章开头提到的效果就是这里起了作用,在IMP调用的时候做了[value valueGetSelectorName],将对应的NSNumber转换为简单数据类型。...NSValue 05 KVC高级 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值

    88320

    iOS - 关于 KVC 的一些总结

    - (NSDictionaryNSString *,id> *)dictionaryWithValuesForKeys:(NSArrayNSString *> *)keys; 将指定字典中的值设置到消息接收者的属性中...@avg 读取集合中每个元素的右键路径指定的属性,将其转换为double类型 (nil用 0 替代),并计算这些值的算术平均值。然后将结果以NSNumber实例返回。...@sum 读取集合中每个元素的右键路径指定的属性,将其转换为double类型 (nil用 0 替代),并计算这些值的总和。然后将结果以NSNumber实例返回。...⑤ 如果取到的值是一个对象指针,即获取的是对象,则直接将对象返回。   如果取到的值是一个NSNumber支持的数据类型,则将其存储在NSNumber实例并返回。  ...如果取到的值不是一个NSNumber支持的数据类型,则转换为NSValue对象, 然后返回。

    1.9K10
    领券