setNilValueForKey:could not set nil as the value for the key distance.解决方案



在做小项目的时候,解析json数据以后,将其赋给字典或数组时,出现了这个错误。

主要原因是:赋值的value值为nil,而NSDictionary和NSArray存储对象不能为nil,只能为OC对象。


‘[<CinemaModal 0x7fb2a8558c50> setNilValueForKey]: could not set nil as the value for the key distance.‘

此处是赋给distance变量的值为nil

那么可以重写方法

- (void)setNilValueForKey:(NSString *)key;
- (void)setNilValueForKey:(NSString *)key {
    if ([key isEqualToString:@"distance"]) {
        _distance = 0;
    }else {
        [super setNilValueForKey:key];
    }
}

至于distance取值多少,结合项目进行取合理值处理。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 00:31:20

setNilValueForKey:could not set nil as the value for the key distance.解决方案的相关文章

告诉你KVC的一切-b

KVC(Key-value coding)键值编码,单看这个名字可能不太好理解.其实翻译一下就很简单了,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值.而不需要调用明确的存取方法.这样就可以在运行时动态在访问和修改对象的属性.而不是在编译时确定,这也是iOS开发中的黑魔法之一.很多高级的iOS开发技巧都是基于KVC实现的.目前网上关于KVC的文章在非常多,有的只是简单地说了下用法,有的讲得深入但是在使用场景和最佳实践没有说明,我写下这遍文章就是给大家详解

在使用kvc进行赋值的时候,有时候会遇到null值,这个时候我们使用kvc会报错

在使用kvc进行赋值的时候,有时候会遇到null值,这个时候我们使用kvc会报错,如何解决 控制器代码如下: // // ViewController.m // 02-模型中的赋值 // // Created by jerry on 15/9/29. // Copyright (c) 2015年 jerry. All rights reserved. // #import "ViewController.h" #import "Message.h" @interfa

当 NSDictionary 遇见 nil

Demo project: NSDictionary-NilSafe 问题 相信用 Objective-C 开发 iOS 应用的人对下面的 crash 不会陌生: *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[1] *** setObjectForKey: key cannot be nil *** setObjectForKey

nil、Nil、NULL、NSNull的区别

nil:指向一个对象的空指针,对objective c id 对象赋空值. Nil:指向一个类的空指针,表示对类进行赋空值. NULL:指向其他类型(如:基本类型.C类型)的空指针, 用于对非对象指针赋空值. NSNull:在集合对象中,表示空值的对象. 1.nil 在指向一个对象的指针为空 定义如下: #ifndef nil # if __has_feature(cxx_nullptr) # define nil nullptr # else # define nil __DARWIN_NUL

NSDictionary初始化,使用@{}方法,插入nil时会报空指针异常

由于今天在NSDictionary初始化的时候出现Crash异常,故记录一下,避免下次再犯. 在Objective-C中,NSDictionary初始化的方法有很多种 方法1: [NSDictionary dictionaryWithObjectsAndKeys:<#(id), ...#>, nil] 方法2: NSDictionary *dic = @{@"key":value} 那么,坑在哪里呢?就在第二种初始化方法 NSDictionary *dic = @{@&qu

Objective-C数据类型之id,SEL,BOOL,nil,NULL和NSNull

 id id是指向Objective-C对象的指针,等价于C语言中的void*,可以映射任何对象指针指向他,或者映射它指向其他的对象.常见的id类型就是类的delegate属性. SEL SEL类型是Objective-C用来定义方法的关键字,但却从不属于任何类实例,其值是通过@selector进行计算,可以把她当做一个函数指针来使用,但实际上的类型是const char*.SEL类系可以在编译时通过@selector()直接创建,也可以用NSSelectorFromString()函数创建,这

nil、Nil、NULL与NSNull的区别

1.nil 指向一个对象的指针为空 在objc.h中的定义如下所示: #ifndef nil # if __has_feature(cxx_nullptr) # define nil nullptr # else # define nil __DARWIN_NULL # endif #endif 在Objective-C中用于id类型的对象 NSString *name = nil; NSURL *url = nil; id object = nil; 2.Nil 指向一个类的指针为空 定义如下

iOS 开发遇到的问题之(nil指针对NSDictionary及NSArray初始化的影响)

nil指针对NSDictionary及NSArray初始化的影响 最近在做项目的时候遇到一个挺坑的崩溃问题,是由于NSDictionary初始化时nil指针引起的崩溃.假设我们现在要初始化一个{key1 : value1, key2 : value2, key3 : value3}的NSDictionary,一般有两种初始化方法: 1.使用标准的初始化方法: NSDictionary *dictionary =[[NSDictionaryalloc] initWithObjectsAndKeys

Jedis接口分类说明-List

字符链表(List)数据类型接口说明 在Redis中,List类型是按照插入顺序排序的字符串链表.和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素.在插入时,如果该键并不存在,Redis将为该键创建一个新的链表.与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除.List中可以包含的最大元素数量是4,294,967,295(42亿左右). #在指定Key所关联的List Value的尾部插入参数中给出的所有Values.如果该Key不存