PHAssetResourceManager writeData Возвращая ошибку 1 - PullRequest
1 голос
/ 02 ноября 2019

Я пытаюсь поделиться PHAssetResource с исходным именем файла. Этот метод сохраняет ресурс ресурса во временный каталог и разделяет оттуда. Начиная с iOS 13 выдает ошибку:

let tempDirectory = NSTemporaryDirectory() as NSString
let partialPath = tempDirectory.appendingPathComponent(sentAssetResource.originalFilename)
let fileURL = URL(fileURLWithPath: partialPath)

let options = PHAssetResourceRequestOptions()
options.isNetworkAccessAllowed = true


PHAssetResourceManager.default().writeData(for: sentAssetResource, toFile: fileURL, options: options, completionHandler: { (error) in

    if (error != nil) {

        print (error?.localizedDescription)
        return
    }

    DispatchQueue.main.async {
        let activityViewController = UIActivityViewController(activityItems: [fileURL],  applicationActivities: nil)

        activityViewController.completionWithItemsHandler = {
            (activity, success, items, error) in

            if FileManager.default.fileExists(atPath: fileURL.path) {
                try? FileManager.default.removeItem(atPath: fileURL.path)
            }
        }

        self.present(activityViewController, animated: true, completion: {


        })
    }
})

Получена ошибка:

The operation couldn't be completed.
(PHPhotosErrorDomain error -1.)

Что здесь может быть не так?

Мне пришлось переключитьсяна PHAssetResourceManager.default().requestData, но это разделяется без правильного имени файла.

1 Ответ

2 голосов
/ 06 ноября 2019

Метод отлично работает на iOS 13.2 в моем тестировании. Возможно, вам не удастся вызвать метод из-за ошибки базы данных (библиотека фотографий iOS представляет собой базу данных CoreData, а AssetResources - отдельную таблицу). Можете ли вы воспроизвести проблему в симуляторе, а также на всех тестовых устройствах?

...