设为首页 加入收藏

TOP

keypath扩展/iOS 用KVC设置结构体
2019-08-31 00:19:26 】 浏览:39
Tags:keypath 扩展 /iOS KVC 设置 结构

objc(iOS,macOS) 用KVC设置结构体

 

  我花了一些时间完成了这个扩展KeyPathExtension,并且加入了更多的功能。把谓词功能也和KVC结合在一起了,私以为这样的结合并没有额外的学习成本和更多代码开销,反而让代码更加简洁,希望大家能够给个赞吧。

 

  实现结构体路径的扩展思路:

在Fundation中KVC提供的键值路径只能访问对象,不能访问结构体。其实可以更面向对象。

  执行下面的语句将会报错:

[self setValue:@(100) forKeyPath:@"view.frame.width.x"];

// reason: '[<NSConcreteva lue 0x600003466740> valueForUndefinedKey:]: this class is not key value coding-compliant for the key width.'

  实现这个功能是很简单的:首先NSValue的结构体信息,然后拿到关于这个结构体如何取值和赋值的信息。有了这两条信息就可以了。

  最方便的数据结构就是字典,Key是objcType,value用block,里面放置如何操作传入的结构体内容。综合来看这样基本上也没什么很大的开销。

@{
    @"size"   :   ^(NSValue* value){
    
        return [NSValue valueWithCGSize:[value CGRectValue].size];
    } ,
    ... ...
}
@{
    @"size"   :   ^(NSValue* value , id newValue){

        CGRect rect = [value CGRectValue];
        rect.size = [newValue CGSizeva lue];
        return [NSValue valueWithCGRect:rect];
    } ,
    ... ...
}

  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇weex中UISegmentControl实现及遇.. 下一篇Info.plist的CFBundleIdentifier..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目