我對Core Data的世界很陌生。我的應用程序通過API抓取電影和電視節目數據。 Movie和TvShow managedObjects具有相似的屬性。我對建立模型的最佳方式仍然有點困惑。這是我目前實施的,我想知道我能做些什麼來創建更高效的模型。多媒體類型的核心數據模型?
最好是有一個整體mediaObject具有相似的屬性,然後有電影和tvshow作爲一種子類? (如果是的話我怎麼能實現它)
我對Core Data的世界很陌生。我的應用程序通過API抓取電影和電視節目數據。 Movie和TvShow managedObjects具有相似的屬性。我對建立模型的最佳方式仍然有點困惑。這是我目前實施的,我想知道我能做些什麼來創建更高效的模型。多媒體類型的核心數據模型?
最好是有一個整體mediaObject具有相似的屬性,然後有電影和tvshow作爲一種子類? (如果是的話我怎麼能實現它)
當你有兩個實體具有類似特性可(有時)是有意義的使用「父實體」來保存屬性(或關係),他們有共同點。爲此,請創建一個實體(例如您建議的MediaObject
)併爲其定義所有常用屬性。然後從「子」實體(TVSeries
和Movie
)中刪除這些屬性,而將MediaObject
設置爲父實體 - 這在右側的數據模型檢查器中進行設置。你應該有這樣的事情:
我懷疑有進一步的改進,這是由 - 如。在TVSeries
的name
屬性可能相當於title
上Movie
,因此可能被重命名,移動到父MediaObject
等
一些其他的想法:你原來genre
關係是一對多:一個Movie
可以有很多Genres
,但每個Genre
可能只有一個Movie
。我認爲你可能想扭轉這種情況,所以每個Movie
只屬於一個Genre
,但每個Genre
可以有許多Movies
,或者可能有多種關係。還要注意,通常的做法是使用複數名稱作爲多對多關係,例如。 tvShows
而不是tvShow
。這只是使意圖更清晰。我也會避免id
作爲屬性名稱;它也是通用:mediaId
,genreId
等會更好。
如果使用「創建NSManagedObject子類」菜單選項時,Xcode會創建單獨的類的所有實體,與TVSeries
和Movie
類MediaObject
各爲一個子類(這又NSManagedObject的子類)。每個子類的屬性定義反映相應實體的屬性和關係。
我開始時有一個限制條件:它有時候有時可以使用來使用父實體。謹慎的原因是,在實踐中,Core Data將父/子實體實現爲單個SQL表 - 具有父級和所有子級的所有屬性/關係。這個實現細節對CoreData來說是隱藏的 - 但是會對性能產生影響:表格會是「寬的」 - 很多列 - 其中很多列會因爲涉及到不同的子實體而變空。關於這個問題,你會發現大量關於堆棧溢出的Q & A,有些人選擇不使用父實體,因爲性能受到的影響太差。您需要根據您可能的數據量,查詢的複雜程度等自行評估。
好的。這很明顯。謝謝! :) – Jon