2015-02-25 7 views
5

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?

Antwort

0

Lassen Sie mich sicher, ich verstehe die Frage:

1) Sie verwenden die Fotos Rahmen eines Asset mit PHAssetChangeRequest.deleteAssets (assetToDelete)

2) Sie auf die Fotos App gehen zu löschen und sehen die Kürzlich Gelöschte Fotos, aber das Bild/Objekt, das Sie gerade gelöscht haben, wird nicht in der Foto-App im Papierkorb angezeigt.

Wenn dies der Fall ist, liegt dies daran, dass Sie ein Asset gelöscht haben, das nicht in der Kamerarolle des Benutzers ist, sondern ein PHAsst vom Fotostream von einem anderen Gerät ist. Wenn Sie diese Elemente löschen, werden sie nicht in den Papierkorb verschoben und werden anders als ein normales Foto gelöscht. Ich würde empfehlen, zur Foto-App zu gehen und den gleichen Inhalt zu löschen - wenn es sich um einen Fotostream-Gegenstand handelt, werden Sie sehen, dass es nie in den Papierkorb geht.

Wenn dies nicht das Problem ist, mit dem Sie konfrontiert werden, versuchen Sie bitte, weitere Einzelheiten anzugeben.

+0

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