После обновления до Xcode 11 URL для ресурса Bundle больше не работают - PullRequest
0 голосов
/ 24 сентября 2019

Я обновил Xcode до версии 11.0 (11A420a), и часть кода не работает, как раньше.Я хочу скопировать папку из Bundle во временную директорию.

    func makeHtmlFile (type: InvoiceType?) -> URL {
        let identifier = Bundle.main.bundleIdentifier!
        let cacheDirectory = NSTemporaryDirectory()  + "\(identifier)/Website/"
        let cacheURL = URL(fileURLWithPath: cacheDirectory )
        let websiteUrl = URL(fileReferenceLiteralResourceName: "Website")
        do {
            try FileManager().copyItem(at: websiteUrl, to: cacheURL)
        } catch let error { 
            print ("Copy \(error)\n\tWebsite: \(websiteUrl)\n\tCache:\(cacheURL)")
        }
        ...
    }

В Xcode 10 эта часть кода может найти папку /Website внутри пакета и temporary directory в /var/folders/...., но после обновления выдает ошибку:

Copy Error Domain=NSCocoaErrorDomain Code=4 "The file “Website” doesn’t exist."

Пути, отображаемые в сообщении об ошибке, существуют, я могу пойти туда, скопировав их из сообщения об ошибке и вставив в Finder -> Go -> Go to Folder.Кто-нибудь знает, что изменилось после обновления?

1 Ответ

0 голосов
/ 26 сентября 2019

ОК, я решил проблему хотя бы для себя.Вместо использования NSTemporaryDirectory() я использовал FileManager().temporaryDirectory для URL временных файлов и

let tempDirectory = FileManager().temporaryDirectory
if let websiteURL = Bundle.main.url(forResource: "Website", withExtension: nil) {
    let cacheURL = tempDirectory.appendingPathComponent(websiteURL.lastPathComponent, isDirectory: true)
    ...
}

Кажется, работает как до обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...