【发布时间】:2018-12-27 00:01:53
【问题描述】:
所以我正在开发一个应用程序,让用户在系统照片库中选择几张照片,然后通过共享表使用 Action Extension 删除其中一些照片。
我使用extensionContext.inputItems 来获取所选照片的 URL:
let extensionItems = (self.extensionContext!.inputItems as! [NSExtensionItem]).first!
let attachments = extensionItems.attachments! as! [NSItemProvider]
for provider in attachments {
provider.loadItem(forTypeIdentifier: kUTTypeImage as String, options: nil) {
(imageURL, error) in
...
...
...
}
}
然后我使用PHAssetChangeRequest.deleteAssets 通过它的 URL 删除照片
PHPhotoLibrary.shared().performChanges({
let imageAssetToDelete = PHAsset.fetchAssets(withALAssetURLs: imageURLs, options: nil)
PHAssetChangeRequest.deleteAssets(imageAssetToDelete)
}, completionHandler: {success, error in
if success {
print("success")
} else {
print(error!)
}
})
“成功”已打印到控制台,但未请求删除照片(删除照片警报 like this 未显示)
所以我检查了变量imageAssetToDelete,但它打印:
<PHFetchResult: 0x28188b200> count=0
PHFetchResult 没有项目。
哪一部分出了问题?
【问题讨论】:
-
动作扩展有什么用?如果您在自己的应用程序中,只需删除照片即可。如果您出现在其他人应用的活动视图中,您无法删除照片。
标签: ios swift ios-app-extension ios-extensions phphotolibrary