美文网首页
iOS KVC setValue: forKey崩溃

iOS KVC setValue: forKey崩溃

作者: 假如兔子失了尾 | 来源:发表于2024-01-14 15:02 被阅读0次

常见的几种崩溃原因

  • 1、key为空
  • 2、取用的key在当前class不存在
  • 3、value为空
  • 4、value值为基本属性类型

解决方案

一、key为空

在本类中实现valueForUndefinedKey方法

- (id)valueForUndefinedKey:(NSString *)key {
    return @"";
}
二、取用的key在当前class不存在

在本类中实现setValue: forUndefinedKey:方法
过滤掉给不存在的键值赋值,运行程序就不会崩溃了

- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
}
三、value为空

setValue: forKey中做判空处理

- (void)setValue:(id)value forKey:(NSString *)key {
    if (value) {
        [super setValue:value forKey:key];
    }else {
        [self setValue:@"" forKey:key];
    }
}
四、value值为基本属性类型

添加[value isKindOfClass:[NSObject class]]判断

- (void)setValue:(id)value forKey:(NSString *)key {
    if (value) {
        if ([value isKindOfClass:[NSObject class]]) {
            [super setValue:value forKey:key];
        }else {
            [super setValue:[NSString stringWithFormat:@"%@",value] forKey:key];
        }
    }else {
        [self setValue:@"" forKey:key];
    }
}

相关文章

  • KVC/KVO原理

    KVC/KVO原理 KVC setValue:forKey原理 调用setValue:forKey:方法,会直接寻...

  • iOS 13适配

    iOS 13 适配 1. 私有属性KVC iOS不允许valueForKey、setValue: forKey ...

  • KVC

    KVC(NSKeyValueCoding) 常用的KVC方法:setValue: forKey:与setValue...

  • iOS --- 关于KVC使用的一些小技巧

    KVC是iOS开发中经常会用到的技巧, 主要包括valueForKey:/setValue:ForKey:, va...

  • KVC & KVO 浅析

    KVC部分 KVC的设值过程:( 即 [person setValue:@"beckhams" forKey:@"...

  • iOS13适配

    私有KVC iOS不允许valueForKey、setValue: forKey获取和设置私有属性,需要使用其它方...

  • iOS13 适配

    1.私有KVC [self setValue:baseTabBar forKey:@"tabBar"]; //正常...

  • D20:KVC, KVO, MRC手动内存管理实践

    一. KVC key value coding(键值编码) setValue:forKey:valueForKey...

  • KVC(iOS)

    KVC : key value coding 一、用途: set 单个值 setValue: forkey:...

  • IOS KVC,KVO

    KVC KVC是key Value Coding的缩写,主要方法有setValue:forKey和valueFor...

网友评论

      本文标题:iOS KVC setValue: forKey崩溃

      本文链接:https://www.haomeiwen.com/subject/utqcodtx.html