ios - NSInvalidArgumentException 所需类型 = NSString;给定类型 = __NSDictionaryM;值类型 Not Acceptable : property

标签 ios core-data nsnull

这里我使用NSManagedObject设置一些值。

我遇到的第一个问题是,当我尝试将 null 值分配给属性时,它给出了错误:

所需类型 = NSString;

给定类型=null。

我正在从 JSON 文件序列化的 NSDictionary 获取值。但是当该值为 null 时,我会崩溃并给出上述错误:

所需类型 = NSString;

给定类型=null。

为此,我正在编写以下代码,但仍然收到错误。我应该如何正确处理 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"];

最佳答案

您收到问题标题中引用的错误,因为这一行:

[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"];

即。传递字典的相关元素,而不是字典本身。

关于ios - NSInvalidArgumentException 所需类型 = NSString;给定类型 = __NSDictionaryM;值类型 Not Acceptable : property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38182977/

相关文章:

objective-c - 音乐音阶:循环播放不同音符的功能

ios - 从 CloudKit Assets 中的 CoreData 托管对象保存 NSData

ios - 在 NSManagedObject 中管理文档目录中的文件

iphone - Birdhouse 应用程序的自定义 URL

ios - 更改导航栏的色调颜色 PKAddPassesViewController

ios - iPad 2 Safari 显示像素化的 html 文本和图像

objective-c - NSDictionaray dictionaryWithObjectsAndKeys 添加 NULL 值

ios - 如何检查 NSMutableArray 元素是否为 NSNull 或 AnyObject

ios - 空字符串使 Swift 有条件地崩溃