2015-10-20 59 views
2

我有一個巨大的NSDictionary,有三個層次的層次結構。如何使用NSManagedObject將NSDictionary保存到CoreData?

它看起來層級如下

  1. 主JSON包含對象{}
  2. 它具有對根數的值,比如,比的陣列,其具有詞典和辭典也具有詞典。

    { 
    
    "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":{ 
    
         } 
         } 
        } 
    ] 
    
    } 
    

現在我很困惑,我是否應該去進行單獨NSManagedObject,或使ONE NSManagedObject,並與其他表,或任何其他appraoch一些關係。

可以告訴我,當我有巨大的NSDictionary(從服務器轉換爲NSDictionary的JSON),我想保存在覈心數據中,我該怎麼做。

謝謝。

+0

在您的應用程序中是否有任何脫機支持? – Leena

+0

是的,它是一個離線支持。很高興在這裏見到你leena,Nitin和其他人在堆棧聊天室裏怎麼樣? :) @Leena –

+1

看看RestKit,它適用於離線支持和核心數據 – Leena

回答

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

注:如果值是一個數組或字典時running.Because你定義的本地數據庫的密鑰的NSString將無法正常工作和崩潰。

+0

上面的代碼是將字典保存到核心數據的示例。但是,如果您想將整個json保存爲字典,那麼將您的核心數據屬性定義爲可轉換的。它爲我工作。在將數組或字典保存到核心數據時,我遇到了同樣的問題。 –

相關問題