Я могу писать документы iCloud, но не вижу их - PullRequest
2 голосов
/ 18 января 2020

Я работаю с UIDocuments и iCloud. Я успешно могу записать файл в iCloud, но не вижу его на устройстве и в приложении для файлов.

У меня есть следующее в info.plist.

<key>NSUbiquitousContainers</key>
<dict>
    <key>iCloud.myAppName</key>
    <dict>
        <key>NSUbiquitousContainerIsDocumentScopePublic</key>
        <true/>
        <key>NSUbiquitousContainerName</key>
        <string>myAppName</string>
        <key>NSUbiquitousContainerSupportedFolderLevels</key>
        <string>Any</string>
    </dict>
</dict>

Внутри моего кода Я могу создать каталог, а затем записать файл.

   var containerUrl: URL? {
                    return FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("myAppName")
                }          
  let url =  containerUrl?.appendingPathComponent("fileName.fileType")           

     print("url: \(url)")

Печать возвращает:

file: ///private/var/mobile/Library/Mobile%20Documents/iCloud~myAppName/myAppName/fileName.fileType

Я могу проверить и увидеть, что файлы записаны с кодом, таким как:

let boolTest: Bool = !FileManager.default.fileExists(atPath: testUrl!.path, isDirectory: nil)
print("!file exist: \(boolTest)")

На вкладке «Подписи и возможности» моей цели в iCloud я нажал «Документы iCloud» и у меня есть контейнер называется iCloud.myAppName, который назначен моей команде. (Примечание: есть еще две проверки: «Хранилище ключей-значений» и «CloudKit». Я пробовал оба эти способа. Я считаю, что их не следует проверять.)

Несмотря на это, все, кажется, работает хорошо. Я могу видеть через fileExist, что он написан. Однако я не могу видеть документы в приложении «Файл» или просматривать документы через приложение. Только документы на устройстве.

На данный момент, я не уверен, что мне не хватает. У меня также нет никаких идей относительно того, как отладить это.

1 Ответ

0 голосов
/ 11 февраля 2020

Сохраните их в папке Documents в облачном контейнере. Не нужно добавлять .appendingPathComponent("myAppName")

...