如何使用NSManagedObject将NSDictionary保存到CoreData?

时间:2015-10-20 06:38:46

标签: ios json core-data dictionary

我有一个巨大的NSDictionary,有三个级别的层次结构。

它看起来等级如下

  1. 主JSON包含Object {}
  2. 它在root上的值很少,就像数组一样,它有一个字典,而且该字典也有一个字典。

    {
    
     "id" = "123",
    "name" = "Hello",
    "title_image" = "URL"
    
     "sub_array" : [
       {
        "id" = "123",
        "name" = "Hello",
        "title_image" = "URL"
         "another_dictionary":{
           "abc":{
    
            },
            "abcd":{
    
             }
          }
       },
       {
        "id" = "123",
        "name" = "Hello",
        "title_image" = "URL"
          "another_dictionary":{
           "abc":{
    
            },
            "abcd":{
    
             }
          }
        }
     ]
    
     }
    
  3. 现在我很困惑,我是否应该去制作单独的NSManagedObject,或者创建一个NSManagedObject并与其他表或任何其他appraoch建立一些关系。

    当我拥有巨大的NSDictionary(来自Server的JSON,转换为NSDictionary)并且我想将其保存在Core Data中时,可以告诉我该怎么做。

    感谢。

1 个答案:

答案 0 :(得分:0)

解决方案:

id delegate_info = [UIApplication sharedApplication].delegate;
NSManagedObjectContext *context_info = [delegate_info managedObjectContext];
NSManagedObject *ManagedObject_info = [NSEntityDescription
                                               insertNewObjectForEntityForName:@“localDBname” inManagedObjectContext:context_info];

[ManagedObject_info setValue:[[yourDictName valueForKey:@“key1”] valueForKey:@"user_email"] forKey:@“localdbkey1”];
[ManagedObject_info setValue:[yourDictName valueForKey:@“key2”] forKey:@"localdbkey2”];
[ManagedObject_info setValue:[yourDictName valueForKey:@“key3”] forKey:@"localdbkey3”];


NSError *error;
[context_info save:&error];

注意:如果值是数组或字典,它将无法正常运行并因运行而崩溃。因为您将本地数据库键定义为nsstring。