Swift Core Data多對多關係,你如何保存關係。Swift核心數據多對多關係
讓假設有2個實體事件和會員,一個事件可以有相關的許多成員和成員可以有許多事件......
所以
事件< < - >>會員
關係
活動 - 活動 - 會員 會員 - 會員 - 活動
你會如何保存這種關係?
Swift Core Data多對多關係,你如何保存關係。Swift核心數據多對多關係
讓假設有2個實體事件和會員,一個事件可以有相關的許多成員和成員可以有許多事件......
所以
事件< < - >>會員
關係
活動 - 活動 - 會員 會員 - 會員 - 活動
你會如何保存這種關係?
你不必任何代碼,建立實體的事件和會員的好友:)之間的關係
您可以打開核心數據模型,選擇事件實體,按住控制並拖動鼠標成員實體: )的關係會立即建立:)
現在選擇的關係,它來自兩個事件改變了許多許多會員(多到許多關係)和成員事件(反向關係):)
現在在Event和Member實體中適當地命名這些關係:)
像許多在事件一對多的關係被命名爲involves_Members和會員實體相同的關係將被命名爲involvedin_Events :)
現在,當您生成兩個實體的模型類,你會發現
Events.h
有一個屬性名爲involves_Members這將是類型的NSSet
並且類似地
`Members.h`
有一個屬性名爲involvedin_Events這將是NSSet
類型以及:)
現在假設,如果你想添加的成員活動的所有你需要做的是
創建一個成員對象
[context performBlock:^{
Member *member = (Member *)[NSEntityDescription insertNewObjectForEntityForName:@"Member" inManagedObjectContext:context];
[member setValue:@"yourValue" forKey:@"yourkey"];
//after populating it with appropriate value set the relationship with event :)
//get the event to which you want to set the relationship with member using NSFetchRequest :)
//assuming you have event object with you
NSMutableSet *involvedMembers = [event mutableSetValueForKey:@"involves_Members"];
[involvedMembers addObject:member];
[event setValue:involvedMembers forKey:@"involves_Members"];
//thats it you are done now
//save the context now :)
NSError *error;
[context save:&error];
}];
而且當你要訪問所有參與成員和事件的所有你需要做的就是用NSFecthRequest獲得事件對象:),一旦你有事件對象,你可以通過訪問其所有成員,
NSArray *membersArray = [event.involves_Members allObjects];
OR
NSArray *membersArray = [event valueForKey:@"involves_Members"];
就是這樣:)同樣的事情適用於成員enity以及:)
TIP
你不想刪除操作弄亂你的核心數據:)因此,選擇關係involves_Members
和involvedin_Events
和d設置刪除規則抵消
希望我做我的觀點明確:)快樂編碼好友:)
謝謝您的明確答覆。你有快捷版嗎? – kupilot
@ kupilot:抱歉的哥們沒有imac與我現在會嘗試明天提供你的代碼:)但將此轉換爲swift應該是一個問題:)這是一個鏈接,我相信你可能已經看到它:)如果不是看看它:) https://www.raywenderlich.com/14742/core-data-on-ios-5-tutorial-how-to-work-with-relations-and-predicates我提到的一切都非常清楚地解釋並在迅速:)希望它可以幫助你:) –