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