2013-10-11 246 views
2

我想知道是否有人願意幫助我解決核心數據相關問題。我正在構建iPhone應用程序,現在需要創建從一個實體到另一個實體的關係。核心數據:建立關係

我是新來的核心數據,目標c和坦率地說整個應用程序開發過程,所以如果你確實有一個答案,請記住我可能會發現很難理解:-(我花了很長時間掃描網頁和閱讀蘋果的文件,只是不能讓我的頭解決這個問題。


我試圖將新數據插入一個實體,使現有對象的關係在不同的實體。我有設置我的數據模型,創建我的NSManagedObjectSubClasses,並可以插入和管理數據到一個單一的實體,我只是不能解決如何使用關係。

例如,假設我有一個名爲Article的實體,另一個名爲Author。我已經有一個作者列表。當我創建一篇新文章時,如何將這篇新文章與已有作者建立關係?

我需要哪些代碼行來創建這種關係?

我需要什麼信息來創建鏈接?

我有一種感覺,我的問題是與我試圖建立關係的數據類型。 NSIndexPath,NSManagedObject和NSMutableSet似乎並不正確。

任何幫助將非常感謝,謝謝。

回答

0

您創建的關係是設計實體的一部分,而不是代碼行。假設您希望能夠擁有多個作者的文章,則需要查看多對多關係類型。 (作者將有一個多對多的關係稱爲文章和文章將有一個多對多的關係稱爲作家是它的反面)

然後,您可以創建作者和文章的子類和代碼來鏈接他們的對象將是東西如:[myAuthor addArticlesObject:myArticle];

例如:

Author *myAuthor = [NSEntityDescription insertNewObjectForEntityForName:@"Author" 
               inManagedObjectContext:self.managedObjectContext]; 
myAuthor.name = @"Phillip Mills"; 
Article *myArticle = [NSEntityDescription insertNewObjectForEntityForName:@"Article" 
                inManagedObjectContext:self.managedObjectContext]; 
myArticle.title = @"Sample of linking core data entities"; 

NSError *error; 
[myAuthor addArticlesObject:myArticle]; 
if (![self.managedObjectContext save:&error]) 
{ 
    NSLog(@"Database update failed: %@", error); 
} 
+0

感謝這麼快回復。我有一個類似的設置,你所描述的。我似乎無法理解的部分是「myArticle」部分?它是什麼?你能爲我分解你的代碼行嗎? –

+0

'myArticle'和'myAuthor'被假定爲使用NSEntityDescription的'insertNewObjectForEntityForName:inManagedObjectContext:'方法創建的對象。如果關係設置正確,'addArticlesObject'應該存在於'Author'類中。 –

+0

再次感謝你,我想我到了那裏,但我現在得到的錯誤:「沒有已知的選擇器類方法addArticlesObject:'」你知道爲什麼會發生這種情況嗎? –