2016-11-30 53 views
0

我已經創建了核心數據的應用程序。但現在,我想,如果用戶丟失或替換他們的設備會發生什麼。假設他們得到一個新的並重新安裝應用程序。將數據保存在iPhone之外

什麼是最好的和簡單的方式來獲取我以前的數據存儲在他的舊設備的核心數據。

您能否介紹一下您的想法?

+0

這就是人們(應該)將他們的設備備份到iTunes/iCloud的原因。當他們獲得新設備時,他們可以恢復設備備份,並將所有應用程序恢復爲全部數據。 – rmaddy

+0

如果他們這樣做,他們會得到什麼在覈心數據返回是正確的? –

+0

他們應該,這是設備備份的要點。它是在備份時取回設備上的每一個位。嘗試使用您的開發設備之一。 – rmaddy

回答

1

對於單個設備和任何替換設備(如果損壞或丟失),僅備份到iTunes或iCloud就足夠了。然後,如果/需要,您可以從該備份進行恢復。這適用於任何應用程序數據,而不僅僅是CoreData。

您的應用程序還可能包含將CoreData持久性存儲文件複製到其他位置的功能,然後從其他位置加載它。這通常只是一個單獨的SQLite數據庫文件,並且可以直接在設備之間進行復制。例如,將其複製到'文檔'目錄,然後通過iTunes抓取或通過電子郵件發送。然後,您可以從某處讀取它並將其寫入持久性存儲文件位置(而CoreData不使用它)。這種方法對於只有一個獨立於您在iCloud/iTunes上獲得的整個設備備份的應用程序的時間點數據備份很有用。它還使用戶能夠將其整個應用程序數據集發送給其他用戶(如果有任何用途的話),或者將應用程序數據恢復到某個時間點,而無需恢復包括所有其他應用程序在內的整個設備。

所以我希望能回答你原來的問題。爲您的後續查詢中的評論...

對於多個設備同時共享相同的數據,有CloudKit:https://developer.apple.com/icloud/。但是,我不知道這是否適用於CoreData(我懷疑不是)。 (請注意,CoreData自己的iCloud同步在iOS 10中已棄用。)

還有第三方替代方法,如Realm:https://realm.io/。 Realm被很多開發人員強烈推薦,並且是跨平臺的。但它是CoreData的替代品,而不是與它兼容(所以不太符合你的要求)。對於設備間的數據同步,Realm將要求您在Mac OS X或Linux機器上設置您自己的數據同步服務器('Realm Mobile Platform'),您的所有用戶的設備都需要通過該設備訪問互聯網在任何時間。

另外,你可以推出自己的解決方案,但你爲什麼?

+0

我可以在模擬器中使用cloudkit嗎?沒有任何設備 –

+0

最好問一個單獨的問題,我認爲。取決於您是否可以使用iCloud帳戶設置模擬器,但我沒有看過。檢查模擬器上的「設置」應用程序。 –

0

這就是iCloud的用途。正如rmaddy在評論中所說的那樣,您可以將核心數據庫備份到iCloud。我沒有這樣做,但我已經讀過它了。

1

一個非常簡單的方法是使用iCloud API並將所有數據存儲在iCloud存儲上。這類應用程序非常安全可靠。

+0

任何使用iCloud API的好教程? –

+0

我認爲這個鏈接會幫助你.. http://www.appcoda.com/icloud-programming-ios-intro-tutorial/ –