2013-02-04 47 views
0

enter image description here核心數據 - 存儲陣列爲核心的數據一個 - 一對多的關係表

在我接觸的表我插入來自iPhone的地址簿中挑選聯繫人的信息。

我存儲聯繫人的姓名和號碼(在第0個索引處),並通過此代碼添加兩個字段twilio number和bool check。

AppDelegate *appDelegate = 
[[UIApplication sharedApplication] delegate]; 

NSManagedObjectContext *context = 
[appDelegate managedObjectContext]; 

Contacts * newContact = [NSEntityDescription 
         insertNewObjectForEntityForName:@"Contacts" 
         inManagedObjectContext:context]; 

newContact.name = name; 
newContact.number = phone; 
newContact.isEligible = isEligible; 
newContact.twilionumber = tempTwilioNumber; 

的方案是接的所有其他電話號碼(不是在第0索引其他),其是在陣列的形式,並將其保存在具有該屬性的電話號碼的ContactDetail表。 這種情況是一個聯繫人可以有多個其他號碼。

我怎麼能將該數組插入contactDetail錶針對聯繫人表中的一個條目?

+0

是否必須是一個陣列?您可以使用另一個名爲Phonenumber的實體,並在Phonenumber和ContactDetail之間創建一個一對多的關係。 – shadowhorst

回答

0

只需執行以下代碼即可完成操作;

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 

    NSManagedObjectContext *context = [appDelegate managedObjectContext]; 

    Contacts * newContact = [NSEntityDescription 
         insertNewObjectForEntityForName:@"Contacts" 
         inManagedObjectContext:context]; 

newContact.name = name; 
newContact.number = phone; 
newContact.isEligible = isEligible; 
newContact.twilionumber = tempTwilioNumber; 


for (int i=1; i<otherContactNumbersArray.count; i++) 
{ 
    ContactDetail * newContactDetail = [NSEntityDescription 
             insertNewObjectForEntityForName:@"ContactDetail" 
             inManagedObjectContext:context]; 

    newContactDetail.phoneNumber = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, i); 
    newContactDetail.contactInfo = newContact; 
} 

NSError *myError; 
[context save:&myError]; 

非常感謝三十幾人次誰甚至沒有到了這個問題的評價,使我能早日找到一個解決方案.... :)

0

您的ContactDetail關係應該是一對多的關係,而不是一對一關係。您還需要將「索引」屬性添加到ContactDetail。通過這種方式,當您爲您的聯繫人實例獲取詳細信息時(詳細信息將採用NSSet形式),您可以按索引對它們排序

+0

感謝您的回答。我把這種關係定爲一對多。問題在於設置數據不提取數據。有什麼方法可以通過索引從數組索引中選取值並將其存儲在覈心數據表中? – user1940888