我在这里使用NSManagedObject
设置一些值。
我得到的第一个问题当我尝试将null值赋给属性时它会给出错误:
desired type = NSString;
给定type = null。
我从JSON文件中序列化NSDictionary
获取值。但是当值为null时,我会得到崩溃上面的错误:
desired type = NSString;
给定type = null。
为此,我正在编写以下代码但仍然得到错误。我该怎么做才能正确处理空值。
NSManagedObject *updateDevice=[results lastObject];
if([results count] > 0){
//if(1){
NSLog(@"updateeeee");
//continue;
[updateDevice setValue:[NSString stringWithFormat:@"%@",[dict objectForKey:@"clip_image_path"]] forKey:@"clip_image_path"];
[updateDevice setValue:[dict objectForKey:@"clip_name"] forKey:@"clip_name"];
[updateDevice setValue:[dict objectForKey:@"page_categorisation"] forKey:@"page_categorisation"];
以下属性具有空值
[updateDevice setValue:[dict objectForKey:@"personality_company_master_values"] == [NSNull null] ? nil:dict forKey:@"personality_company_master_values"];
[updateDevice setValue:[dict objectForKey:@"category_master_values"] == [NSNull null] ? nil: dict forKey:@"category_master_values"];
[updateDevice setValue:[dict objectForKey:@"brand_master_values"] == [NSNull null] ? nil:dict forKey:@"brand_master_values"];
[updateDevice setValue:[dict objectForKey:@"company_master_values"] == [NSNull null] ? nil:dict forKey:@"company_master_values"];
[updateDevice setValue:[dict objectForKey:@"product_master_values"] == [NSNull null] ? nil:dict forKey:@"product_master_values"];
[updateDevice setValue:[dict objectForKey:@"industry_master_values"] == [NSNull null] ? nil:dict forKey:@"industry_master_values"];
答案 0 :(得分:1)
您收到问题标题中引用的错误,因为此行:
[updateDevice setValue:[dict objectForKey:@"personality_company_master_values"] == [NSNull null] ? nil:dict forKey:@"personality_company_master_values"];
如果条件失败,正在将dict
传递给setValue:
。尝试替换为:
[updateDevice setValue:[dict objectForKey:@"personality_company_master_values"] == [NSNull null] ? nil: [dict objectForKey:@"personality_company_master_values"] forKey:@"personality_company_master_values"];
即。传递字典的相关元素,而不是字典本身。
答案 1 :(得分:0)
您的代码中存在一些错误。首先,最好使用isEqual:
方法而不是==
与NSNull
进行比较:
[[dict objectForKey:@"personality_company_master_values"] isEqual:[NSNull null]]
另一个问题是您如何使用?:
运算符。如果设置括号,它将如下所示:
[updateDevice setValue:([dict objectForKey:@"personality_company_master_values"] == [NSNull null] ? nil:dict) forKey:@"personality_company_master_values"];
您确定dict
不是nil
吗?或许你错过了]
?
答案 2 :(得分:0)
plz在设置值
之前使用此代码 if ([updateDevice valueForKey:@"personality_company_master_values"] && ![[updateDevice valueForKey:@"personality_company_master_values"] isKindOfClass:[NSNull class]])
[updateDevice setValue:[dict objectForKey:@"personality_company_master_values"] forKey:@"personality_company_master_values"];