iOS 9如何将GIF保存到照片库?

3
现在AssetsLibrary已经被弃用,我们应该使用照片框架,具体来说是PHPhotoLibrary将图像和视频保存到用户的相机胶卷中。
使用ReactiveCocoa,这样的请求将如下所示:
func saveImageAsAsset(url: NSURL) -> SignalProducer<String, NSError> {
    return SignalProducer { observer, disposable in
        var imageIdentifier: String?
        PHPhotoLibrary.sharedPhotoLibrary().performChanges({
            let changeRequest = PHAssetChangeRequest.creationRequestForAssetFromImageAtFileURL(url)
            let placeholder = changeRequest?.placeholderForCreatedAsset
            imageIdentifier = placeholder?.localIdentifier
        }, completionHandler: { success, error in
            if let identifier = imageIdentifier where success {
                observer.sendNext(identifier)
            } else if let error = error {
                observer.sendFailed(error)
                return
            }
            observer.sendCompleted()
        })
    }
}

我使用Regift从视频中创建了一个gif,并且我可以确认该gif存在于我的临时目录中。然而,当我尝试将该gif保存到相机胶卷时,出现了一个神秘的错误:NSCocoaErrorDomain -1 (null),这真的非常有用。
有人经历过这种问题吗?

我遇到了完全相同的问题,也找不到解决方案,这可能与文件格式不受支持有关。 - NewShelbyWoo
1
偶然解决了吗? - Roi Mulia
很遗憾,这个项目是很久以前的事情了,我甚至不确定我是否还有代码。 - barndog
1个回答

1
你可以尝试这个。

let data = try? Data(contentsOf: /*Your-File-URL-Path*/)
PHPhotoLibrary.shared().performChanges({
    PHAssetCreationRequest.forAsset().addResource(with: .photo, data: data!, options: nil)
})

欢迎来到SO!虽然这段代码可能解决了问题,但我们可以通过添加一个简短的说明来改进这个答案,以描述为什么这段代码有效。 - Cy Rossignol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接