2012-03-14 30 views
0

我需要在iOS應用程序中存儲活動源。活動飼料項目將有一個​​字段,它可以是系統中許多(而且我的意思是很多)類型的實體。如何最好地將對象存儲在可能有許多不同類型的CoreData關係屬性中?

在我的CoreData模型中,在Activity實體上實現此​​關係字段的好方法是什麼?

可以使用id數據類型,也可以使用NSManagedObject類型?

解決此問題的一種方法可能是將CoreData的entityId作爲字符串存儲在特殊字段中,但如果有更好的方法,我寧願避免這種情況。


例子:

爲了簡單起見,讓我們說我們有一個不那麼標準的博客模式:UserBlogBlogPostComment和下面的活動可能會發生:

  • 用戶可以創建一個新的博客。
  • 用戶可以發佈新的博客文章。
  • 博客可以評論。
  • 評論也許喜歡。

每一種生成網站,輪流有相關​​就該被修改或正在採取行動的項目上了一個新Activity項目。

現在我需要從我的iPhone應用程序下載,翻譯和存儲這些活動飼料項目...所以我怎麼模仿這個​​領域,因爲它可能指向任何可能的實體?

但是在我的真實代碼中,有大約10多種類型的實體可以放入這個​​字段中,所以我在這裏尋找一個好的方法。

+0

你能舉幾個例子說明你的數據模型的模式是怎麼樣的嗎?您想要將不同類型的對象存儲在託管對象的相同字段中? – MrTJ 2012-03-14 09:51:46

+0

@MrTJ是的,許多不同的類型。 – chakrit 2012-03-14 11:12:47

回答

1

如果您不需要搜索/查詢變量類型對象的字段,那麼我建議使用NSCoder將它們轉換爲二進制表示形式,並將它們存儲在託管對象的BLOB字段中。您可能還想將某些類型信息存儲在同一被管理對象的其他字段中。另一方面,如果您需要在這些變量對象之間進行搜索,則必須爲每個對象創建一個新的託管對象類型(實體)。在這裏看到我的答案:NSCoding VS Core data

+0

啊,這是一個很好的答案,謝謝! – chakrit 2012-03-14 11:58:35

+0

雖然我不能完全「爲每個對象創建一個新的託管對象類型」,因爲這意味着使用巨大的STI方案會讓應用程序停滯不前。不確定這是什麼意思?鏈接Q中的NSCoding/store JSON結構方法對我來說似乎是一種更可行的方法。 – chakrit 2012-03-14 12:01:40

+1

我的意思是「每個對象類的新實體」只是制定得不好:)但如果你有太多的課程,真的不是要走的路。然後,我可以建議的唯一方法是將對象序列化爲NSCoding/JSON結構。 – MrTJ 2012-03-14 12:08:16

0

只能使用NSManagedObject。所以你必須創建你的模型和你的關係,併爲Activity和有效負載創建新文件,它們將成爲NSManagedObject的子類。

看看Core Data Programing Guide。 你會在那裏找到你的答案。

相關問題