2014-02-25 33 views
1

在我的應用我有這樣的代碼更新DB:iOS版:核心數據更新的對象與單用一對多的關係

NSManagedObjectContext *context = [self managedObjectContext]; 

NSFetchRequest *fetchRequest=[NSFetchRequest fetchRequestWithEntityName:@"Struct"]; 
     NSError *error = nil; 

     for (id element in array){ 
      [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"id==%@",[element objectForKey:@"id"]]]; 

      Struct *struct = [[context executeFetchRequest:fetchRequest error:&error] lastObject]; 

      if (struct != nil){ 
       //updating value of attributes 
       struct.name = [element objectForKey:@"n"]; 
       struct.val = [element objectForKey:@"val"]; 
       struct.pos = [element objectForKey:@"pos"]; 


      } 
      else{ 
       //create a new identity 
      } 
     } 

這一切都確定,但我有與結構關係的其他兩個對象:

「Id_Loc」(一對多) 「詳細信息」(一對一)

我不知道如何更新他們,我不知道如何從我的對象稱他們爲「結構」 我不覺得什麼 你能幫助我嗎? 感謝

+0

'Struct'應具有在頭的一些方法(表明,代碼)。關係中是否已經包含要更新的對象,或者您需要添加新對象?如何刪除任何現有的? – Wain

回答

2

它的工作原理你使用.name和.VAL和.POS以同樣的方式。

的一對一的關係將返回一個對象,一對多的關係將返回一個NSSet中。

假設你的一個一對一的關係是從結構到酒吧和關係的名字是吧,你會用struct.bar收到一個酒吧對象。

編輯: 如果你想添加新的對象到一對多的關係,你應該使用[struct addFooObject:]; Foo是你的對象名稱。

+0

好的,謝謝你的回答 – CrazyDev