Получите имена файлов в папке iCloud Drive, которые еще не были загружены

Я пытаюсь получить имена всех файлов и папок в каталоге iCloud Drive:

import Foundation

let fileManager = FileManager.default
let directoryURL = URL(string: "folderPathHere")!

do {
    let directoryContents = try fileManager.contentsOfDirectory(at: directoryURL, includingPropertiesForKeys: nil, options: [.skipsSubdirectoryDescendants, .skipsHiddenFiles])
    for url in directoryContents {
        let fileName = fileManager.displayName(atPath: url.absoluteString)
        print(fileName)
    }
} catch let error {
    let directoryName = fileManager.displayName(atPath: directoryURL.absoluteString)
    print("Couldnt get contents of \(directoryName): \(error.localizedDescription)")
}

Похоже, что любые файлы iCloud, которые не были загружены на устройство, не возвращают URL-адреса.

Я знаю, что могу проверить, содержит ли путь вездесущий элемент, когда я уже знаю путь с помощью приведенного ниже кода (даже если он не загружен):

fileManager.isUbiquitousItem(at: writePath)

Есть ли способ получить URL-адреса и имена этих файлов iCloud без их предварительной загрузки?

URL-адрес каталога - это URL-адрес с ограничением безопасности, созданный на основе данных закладок на тот случай, если это имеет какое-либо значение (этот код здесь опущен для ясности).

Спасибо


person mralexhay    schedule 08.04.2020    source источник
comment
Обратите внимание, что absoluteString это не то же самое, что path. Вы должны использовать url.path   -  person Leo Dabus    schedule 18.07.2020


Ответы (1)


Нашел ответ. Я пропускал скрытые файлы с «.skipsHiddenFiles», но незагруженные файлы на самом деле являются скрытыми файлами с именем: «.fileName.ext.iCloud».

Опция удаления скрытых файлов теперь работает должным образом.

person mralexhay    schedule 09.04.2020