使用Photos框架删除相机胶卷资源

5
我正在编写一个测试应用程序,以查看是否可以使用Photos框架在iOS 8中删除“照片库”资产。尽管我怀疑这是不可能的,但我发现文档内容不清晰,并且本站上有帖子表明这是可能的。例如,请参见此处
在我的测试应用程序中,我从库中选择了一个资产:
var picker = UIImagePickerController()
picker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
picker.mediaTypes = [kUTTypeMovie]

在代理回调中,我获取了资源的NSURL,并将其放入数组中:
let thePicked = info[UIImagePickerControllerMediaURL] as NSURL!
var videosToDelete: [NSURL] = [theURL]

以下是我最不自信的部分,我要获取PhotoLibrary,并发出更改请求以删除资产:

PHPhotoLibrary.sharedPhotoLibrary().performChanges( {
    let assetToDelete = PHAsset.fetchAssetsWithALAssetURLs(videosToDelete, options: nil)
    PHAssetChangeRequest.deleteAssets(assetToDelete)
},
    completionHandler: { success, error in
        NSLog("Finished deleting asset. %@", (success ? "Success" : error))
})

完成处理程序返回成功,但资产从未被删除。我做错了什么吗?或者我试图做一些本质上不允许的事情,而且我没有得到正确的反馈?
1个回答

0

让我确认一下问题:

1)您使用照片框架通过PHAssetChangeRequest.deleteAssets(assetToDelete)删除资产

2)您转到照片应用程序并查看最近删除的照片,但是您在照片应用程序的垃圾桶中没有看到刚刚删除的图像/资产。

如果您遇到这种情况,那是因为您已经删除了一个不在用户“相机胶卷”中的资产,而是来自另一台设备的PHAsst。当您删除这些资产时,它们不会被发送到垃圾箱,并且与普通照片不同地被删除。我建议您转到照片应用程序并删除相同的资产-如果它是photostream资产,则会发现它永远不会进入垃圾箱。

如果这不是您面临的问题,请尝试提供更多详细信息。


感谢@andrew-paul-simmons。1)如上所述,是正确的;2)略有不同:资产不会被删除,它仍然在相机胶卷中。但我可以通过使用照片应用程序将其删除,它会进入“最近删除”文件夹。我正在使用由同一应用程序创建的视频资产进行测试(使用相机)。 - coco

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