【问题标题】:PHAssetResourceManager writeData Returning Error 1PHAssetResourceManager writeData 返回错误 1
【发布时间】:2019-11-02 16:42:48
【问题描述】:

我正在尝试使用原始文件名共享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,但是这个共享没有正确的文件名。

【问题讨论】:

    标签: ios swift xcode photo phasset


    【解决方案1】:

    在我的测试中,该方法在 iOS 13.2 上运行良好。该方法可能会因数据库错误而失败(iOS 照片库是 CoreData 数据库,AssetResources 是单独的表)。您能否在模拟器以及所有测试设备上重现该问题?

    【讨论】:

    • 资产存在一段时间后,它似乎会间歇性地工作。然而,它似乎并没有永久消失。有时还会收到“无法使资源在本地可用”错误。
    • 很可能是 iOS 13 的错误。您是否在 iOS 设备控制台中看到任何相应的错误?我会向 Apple 报告。
    • 我已将此报告为 Apple 的错误。但是,我仍在处理这个问题。
    猜你喜欢
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 2013-02-14
    • 2015-10-05
    • 1970-01-01
    相关资源
    最近更新 更多