2016-10-16 40 views
0

バックアップの手段としてファイルをiCloudに保存しています。ファイルのアップロードとダウンロードは正常に機能しているようですが、デバイス上のアプリを削除して同じデバイスにアプリを再インストールすると、iCloudにアップロードされたファイルは表示されなくなります)。 ubiquityIdentityTokenはすべてのインストールと同じです。私はデバイス間で同期しようとしていません、ちょうど格納し、取得します。 \ settings \ icloud \ manage storage \にあるファイルを見ることはできますが、このコードを実行することはできません。アプリの再インストール後にiCloudファイルが表示されない

参考になると思います。 Swift 3、iOS 10、Xcode 8

答えて

4

他に誰もこの問題を抱えていないと信じられません。この場合も、単純なファイルの格納と取得であり、デバイス間で動的に同期されません。

問題の要点は、iCloudはクラウドファイルを新しいデバイスに自動的に同期させないことです。あなたのコードはそうする必要があります。したがって、デバイスからアプリケーションを削除しても(iCloudからではなく)同じアプリケーションを再インストールすると、アプリは以前のiCloudファイルを表示しません。新しいコードを追加して上のコードで表示することもできますが、実際にはローカルのユビキタスコンテナコピーを見ているだけです。以前の項目を表示するには、iCloudでmetadataQueryを実行する必要があります。メタデータクエリの結果からファイルのファイル名を解析してから、 startDownloadingUbiquitousItem(at :)を実行します。たとえば、metadataQueryの結果からiCloudにファイルの配列を作成し、このdo-catchをfor-inループに配置します。

let fileManager = FileManager.default 
let iCloudDocumentsURL = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents", isDirectory: true) 
let iCloudDocumentToCheckURL = iCloudDocumentsURL?.appendingPathComponent(whateverFileName, isDirectory: false) 

do { 
    try fileManager.startDownloadingUbiquitousItem(at: iCloudDocumentToCheckURL!) 
    print("tested file: \(whateverFileName)") 

} catch let error as NSError { 
    print("Unresolved error \(error), \(error.userInfo)") 
}//do catch 
関連する問題