2013-07-08 22 views
1

我需要一個suggestios關於如何正確實現CoreData的對象,這些對象可以從服務器上傳/下載並通過遊戲中心發送。關於CoreData和對象處理的建議

應用程序是類似於換式卡牌遊戲中,你可以從這些2個獨立的實體的想法:

  • 卡:實際獨特的卡所有關於每個人的信息。 「卡的實體是靜態的,不會改變,它們不需要在服務器上發送,因爲我只需要發送」CardId「來拉出」卡「實體。用戶卡:用戶擁有的所有卡片,用戶可以多次擁有相同的卡片,但這將是具有指向基本「卡片」的指針(「卡片ID」)的不同「用戶卡片」。他們總是在變化。他們需要通過GameCenter輕鬆發送並從服務器上傳/下載。此外,當用戶訪問朋友的個人資料以查看他們擁有哪些卡時,需要從服務器下載一些臨時「用戶卡」。

有沒有人有任何建議如何正確地做到這一點?目前我有兩個想法:

A.使用CoreData的一切,這將意味着「用戶卡」是NSManagedObject子類,智能地編碼/解碼(使用NSCoding)上傳/下載並通過GameCenter發送。基本的「卡」被設置爲核心數據中的關係。還爲「用戶卡」設置了「臨時」屬性,以便知道哪些不屬於當前用戶,以便稍後可以刪除它們。

B.僅將CoreData用於基本「卡」,併爲「UserCard」使用NSObject子類。這使我可以直接使用「用戶卡」,而無需將它們插入到CoreData中。使其更容易通過GameCenter下載/上傳和發送。它也消除了對「臨時」屬性的需要,因爲當視圖停止使用它們時,對象將被釋放。這種方法的問題是我需要另一種方式來將當前用戶的「UserCard」存儲在設備中,因爲它們確實需要脫機使用。

謝謝!

回答

2

就我個人而言,我會全面使用CoreData。原因:

  1. 你已經不必潛入CoreData處理卡反正
  2. 只需創建一個NSManagedObject類稱爲NSManagedObject + JSON。它有一個叫做-(NSDictionary*)jsonRepresentation的簡單方法,並將UserCard格式本身放入字典中並返回。超級簡單。
  3. 使用CoreData並經常保存會比較安全,而不是冒着寫入文件的風險,並且它會:1.被破壞(極不可能,但如果用戶會這樣做會發瘋);或2.沒有完全寫入(用戶可能會在應用程序有時間將所有內容寫入文件之前終止應用程序)
  4. 實現UserCard實體的額外工作量很小。
  5. 您將獲得CoreData的內置管理和搜索功能。

我剛剛完成了一個使用CoreData的大型項目,所以我可能會有點偏見。從你在問題中陳述的內容來看,我會把CoreData當成一切。下面是與CoreData打交道時一些有用的開源庫和web服務器:

MagicalRecord

AFIncrementalStore

And a great tutorial for integrating CoreData with a web server.

相關問題