2010-03-01 77 views
3

我有一個應用程序,我想在兩個iPhone之間交換通過Core Data管理的信息。使用GameKit在iPhone之間傳輸CoreData數據

有沒有人試圖這樣做,如果是的話,什麼被認爲是最好的方法(即人們在文件中使用XML或JSON等中間格式,或者是否可以直接傳輸對象)。

我很抱歉,如果這個問題看起來太過泛泛,但我正處於需要確定轉移方式的階段,而且我對此API沒有經驗。

我將非常感謝任何代碼示例或指向任何此類示例的鏈接,以便使用GameKit在設備之間傳輸對象。

回答

5

無法傳輸核心數據,因爲它們與它們的上下文和持久性存儲設備之間的直接對象。您需要將數據轉換爲中間格式(可以像轉換爲NSData的NSDictionary一樣簡單),然後將數據推送到連接上,然後在另一側重新構建數據。

我個人覺得JSON是非常適合這種類型的情況,因爲你可以輕鬆地將核心數據對象圖轉換爲一組JSON對象消耗品(字典,數組,字符串和數字),它可以很容易地搬來搬去的。

+0

感謝您的回答。我不假設你有任何代碼示例的鏈接,其中一個核心數據對象圖(我有兩個由關係鏈接的實體)被轉換爲JSON並從中轉換。我知道需要問很多,但我是一個相對較新的iPhone開發者,可能不像我應該那樣熟悉這個概念。 – Urizen 2010-03-02 09:22:44

+0

我剛剛在你的其他問題中發佈了(粗略的)示例代碼。 http://stackoverflow.com/questions/2362323/json-and-core-data-on-the-iphone/2363996#2363996 – 2010-03-02 15:11:32

2

您正在尋找一次性轉移嗎?還是你想讓兩部iPhone在一段時間內保持同步(一場比賽?)。

我對這個主題並沒有太多的瞭解,但是如果你創建了一個遊戲,我建議你看看「核心數據:蘋果的持久化數據API」一書中的「同步服務和核心數據」一章Mac OS X「。

http://www.pragprog.com/titles/mzcd/core-data

的GameKit似乎只是建立通過藍牙連接。如果您希望將來使用IP,請查看使用AsyncSockets。

http://code.google.com/p/cocoaasyncsocket/

+0

這是兩個設備交換數據的一次性傳輸。 – Urizen 2010-03-01 17:30:19