从IOS中的IPhone删除资产(图片或video)

我正在使用Iphone应用程序,我可以使用Assetslibrary枚举资产并将它们加载到表视图中。 用户可以删除应用程序中的一行(图片/video),但是如何直接从我的应用程序更新Iphone相册? 否则刷新,tableview将重新加载以前删除的资产。

可能重复的https://stackoverflow.com/a/11058934/300292 。 简单的回答:你不能。 照片应用是唯一可以删除资源的地方。 这可能是一件好事 – 你不希望任何无聊的应用程序能够删除所有的照片,是吗?

在ios8删除照片是可能的使用照片框架

请检查照片框架的文档

有关删除资产的信息,请参阅PHAssetChangeRequest

+ (void)deleteAssets:(id<NSFastEnumeration>)assets 

其中assets是要删除的PHAsset对象的数组。

+

有关删除集合的信息,请参阅PHAssetCollectionChangeRequest

 + (void)deleteAssetCollections:(id<NSFastEnumeration>)assetCollections 

https://developer.apple.com/documentation/photos/phassetchangerequest/1624062-deleteassets
https://developer.apple.com/documentation/photos/phassetcollectionchangerequest/1619453-deleteassetcollections

正如特德所说,这是现在可以在iOS 8使用照片服务。 实际上很干净。 您需要向光盘库提交更改请求。 这是一个例子。

 [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ [PHAssetChangeRequest deleteAssets:arrayOfPHAssets]; } completionHandler:^(BOOL success, NSError *error) { NSLog(@"Finished deleting asset. %@", (success ? @"Success." : error)); }]; 

确保你已经导入了照片,并获得了用户的授权。 (你可能已经做了,以显示图像已经)

PHAssetchangeRequest – deleteAssets https://developer.apple.com/documentation/photos/phassetchangerequest/1624062-deleteassets PHPhotoLibrary类 – authorizationStatus https://developer.apple.com/documentation/photos/phphotolibrary/1620745-authorizationstatus

它晚了,但对于其他用户,它将会有所帮助。
正如我们所知,只有照片应用程序可以删除图像。 在这种情况下,我通过alassets从照片中检索到所有图像,在自定义图库中查看它们,给出用户从资源中select多个图像以将其保存在电话目录中的选项。 接下来,我使用我的应用程序库而不是照片库。 我已经在应用程序中的任何时候给应用程序的选项从图片导入图像到应用程序库(这是图像的文档目录文件夹)。

在这里添加一个老问题的答案,因为我们经常要求屏幕截图预防作为数据丢失防护(DLP)解决scheme的一部分。 您可以(a)注册屏幕截图通知,并(b)在发生时要求用户删除,但无法默默地或秘密地进行。 这是一个完整的工作代码示例:

 func applicationDidBecomeActive(application: UIApplication) { registerForScreenShotNotifications() } func registerForScreenShotNotifications() { NSNotificationCenter.defaultCenter().addObserverForName(UIApplicationUserDidTakeScreenshotNotification, object: nil, queue: NSOperationQueue.mainQueue()) { (notification) in print("Yep they took a screenshot \(notification)") let assetToDelete = self.getLastImage() if let assetToDelete = assetToDelete { PHPhotoLibrary.sharedPhotoLibrary().performChanges({ PHAssetChangeRequest.deleteAssets([assetToDelete]) }, completionHandler: { (success, error) in print("Success \(success) - Error \(error)") }) } } } // NOTE : You should ask for permission to access photos before this func getLastImage() -> PHAsset? { let fetchOptions = PHFetchOptions() fetchOptions.sortDescriptors = [ NSSortDescriptor(key: "creationDate", ascending: true) ] let fetchResult = PHAsset.fetchAssetsWithMediaType(.Image, options: fetchOptions) let newestAsset = fetchResult.lastObject return newestAsset as! PHAsset? } 

结果是这样的:

ScreenShot Remover示例代码结果