Ich schreibe eine Testanwendung, um zu sehen, ob es möglich ist, ein Foto-Asset in iOS 8 zu löschen, indem ich das Photos-Framework verwende. Obwohl ich vermute, dass es nicht möglich ist, finde ich die Dokumentation unklar und es gibt Beiträge auf dieser Website, die darauf hindeuten, dass es möglich ist. Siehe zum Beispiel here.Löschen eines Kamerarollen-Assets mit Photos framework
In meinem Test-App, nehme ich einen Vermögenswert aus der Bibliothek:
var picker = UIImagePickerController()
picker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
picker.mediaTypes = [kUTTypeMovie]
In den Delegierten Rückruf, ich die NSURL des Vermögenswerts zu erhalten, und es in ein Array setzen:
let thePicked = info[UIImagePickerControllerMediaURL] as NSURL!
var videosToDelete: [NSURL] = [theURL]
und hier ist der Teil, ich bin am wenigsten zuversichtlich, in dem ich die Photolibrary bekommen, und tun Antrag eine Änderung des Vermögenswerts zu löschen:
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
let assetToDelete = PHAsset.fetchAssetsWithALAssetURLs(videosToDelete, options: nil)
PHAssetChangeRequest.deleteAssets(assetToDelete)
},
completionHandler: { success, error in
NSLog("Finished deleting asset. %@", (success ? "Success" : error))
})
Der Beendigungshandler wird erfolgreich zurückgegeben, das Asset wird jedoch nie gelöscht. Mache ich etwas falsch? Oder versuche ich etwas inhärent Unzulässiges zu tun und bekomme dafür nicht das richtige Feedback?
Danke, @ andrew-paul-simmons. 1) ist korrekt, wie im obigen Code angegeben; 2) ist etwas anders: das Asset löscht nicht, es bleibt in der Kamerarolle, an Ort und Stelle. Ich kann es jedoch löschen (mit der Fotos App), es geht in den Ordner "kürzlich gelöscht". Ich teste das mit einem Video-Asset, das mit derselben App (mit der Kamera) erstellt wurde. – coco