900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 判断php对象不包含的key 如何判断一个对象是否包含指定Key

判断php对象不包含的key 如何判断一个对象是否包含指定Key

时间:2018-10-15 23:27:27

相关推荐

判断php对象不包含的key 如何判断一个对象是否包含指定Key

引言

KVC帮助我们实现了很多原本难以实现的事情,比如改变AlertAction的字体颜色,大小等,但是在不同的iOS版本中,Key值也会发生改变,所以我们在赋值之前应该先做出判断是key是否存在,不然很可能就会因为使用了无效key而看见如下的提示

this class is not key value coding-compliant for the key ***.

不过可惜的是,iOS并没有直接提供contain这种方法来判断,所以我们只能自行去获取

如果你是用的字典这种常见的类型,那么恭喜你,可以直接通过valueForKey来判断是否存在值即可,但是如果他是一个NSObjc对象呢?比如UIAlertAction?如果你直接使用valueForKey,那么恭喜你,会和setValueForKey一样,抛出上图的异常

解决方法:

根据OC的动态特性,利用Runtime去解决这个问题,查找他的ivars中是否存在这个key,从而达到曲线救国的目的

代码

- (BOOL)key:(NSString *)key existInClass:(Class)metaClass{ unsigned int count = 0; BOOL exist = NO; Ivar *ivars = class_copyIvarList(metaClass, &count); for (int i = 0; i < count; i++) { Ivar ivar = ivars[i]; NSString *keyName = [NSString stringWithCString:ivar_getName(ivar) encoding:NSUTF8StringEncoding]; if ([keyName rangeOfString:key].length>0) { exist = YES; } } return exist; }

感谢阅读这篇文章,转载请注明出处.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。