我目前在我的iOS應用程序中使用本地存儲。用戶數據存儲在文檔目錄中,現在我計劃使用iCloud Documents存儲。使用iCloud文檔存儲的最佳方式
這裏是我打算如何做到這一點:
察看的iCloud可用設備
如果是的話,請使用URLForUbiquityContainerIdentifier得到的iCloud容器URL
保存新文件和文件到這個新的URL
對於我使用此代碼,將返回該文件夾的網址(iCloud中或本地)
class CloudDataManager {
class func getDocumentDiretoryURL() -> NSURL {
let localDocumentsURL = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: .UserDomainMask).last! as NSURL
let iCloudDocumentsURL = NSFileManager.defaultManager().URLForUbiquityContainerIdentifier(nil)?.URLByAppendingPathComponent("Documents")
if userDefault.boolForKey("useCloud") && iCloudDocumentsURL != nil {
return iCloudDocumentsURL!
} else {
return localDocumentsURL
}
}
}
這是不是最好的做法是什麼? 如果有一天iCloud不可用,我擔心會發生問題,因此將使用本地目錄代替雲容器,並且將爲空。 謝謝。
我使用與您相同的代碼來刪除iCloud文件,但該文件不會被刪除。我只是想確認您的刪除功能實際上適用於您的應用程序中的iCloud文件? – gbotha
我沒有問題刪除我的應用程序中的iCloud文件。有時可能需要2分鐘才能看到文件已從iCloud容器中刪除。 – Romain
謝謝。我發現刪除正在爲我工作。但是,當我嘗試更新已經在iCloud中的文件時,我最終得到一個具有相同名稱的新文件,後面跟着一個數字。於是,我決定先檢查文件是否在iCloud中,如果是,則刪除然後添加具有相同名稱的新文件。這仍然會導致重複被保存,並且原始文件在那裏(不被刪除)。但是,當我嘗試刪除文件時,它將被刪除。奇怪......不知道爲什麼會這樣。 – gbotha