Ошибки при записи в каталог поддержки приложений - PullRequest
0 голосов
/ 08 октября 2019

Я видел, как этот вопрос задавался здесь дюжину раз, и, тем не менее, решение, похоже, не решает мою ситуацию.

У меня есть некоторый контент, который необходимо сохранить в каталоге «Поддержка приложений»,но я продолжаю получать ошибки при попытке записи.

func assetFilesDirectory(asset: Asset, shouldCreate: Bool) -> URL? {
        do {
            let applicationSupportFolderURL = try FileManager.default.url(for: .applicationSupportDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
            let folder = applicationSupportFolderURL.appendingPathComponent("\(asset)")
            if !FileManager.default.fileExists(atPath: folder.path) {
                if shouldCreate {
                    try FileManager.default.createDirectory(at: folder, withIntermediateDirectories: true, attributes: nil)
                } else {
                    return nil
                }
            }

            return folder
        } catch {
            print(error)
            return nil
        }
    }

Когда этот код выполняется, я получаю следующую ошибку:

"У вас нет разрешения на сохранениефайл «asset-Background» в папке «Поддержка приложений». "

Я попытался переключить значение параметра create в следующей строке, но я получаюта же ошибка с этим тоже, просто ссылаясь на каталог Application Support и Library .

let applicationSupportFolderURL = try FileManager.default.url(for: .applicationSupportDirectory, in: .userDomainMask, appropriateFor: nil, create: false)

Я не видел никакой причины, по которой это должноРазница в API-интерфейсе, но в качестве информации я использую этот код на платформе tvOS (физическое устройство). Нет информации, указывающей, что Поддержка приложений должна быть ограничена в разрешениях на tvOS.

1 Ответ

0 голосов
/ 09 октября 2019

Я заменил ваш Актив (что бы это ни было) на строку, и она работала нормально:

func assetFilesDirectory(name: String, shouldCreate: Bool) -> URL? {
    do {
        let applicationSupportFolderURL = try FileManager.default.url(for: .applicationSupportDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
        let folder = applicationSupportFolderURL.appendingPathComponent(name)
        if !FileManager.default.fileExists(atPath: folder.path) {
            if shouldCreate {
                try FileManager.default.createDirectory(at: folder, withIntermediateDirectories: true, attributes: nil)
                print("ok")
            } else {
                return nil
            }
        }

        return folder
    } catch {
        print(error)
        return nil
    }
}

Я позвонил

let url = self.assetFilesDirectory(name: "test", shouldCreate: true)
print(url)

, и я вернулся "ok" и URLfile:///blahblahblah/Library/Application%20Support/test что и следовало ожидать.

...