Sto scrivendo un'applicazione di test per vedere se è possibile eliminare un asset "libreria fotografica" in iOS 8, utilizzando il framework Photos. Anche se sospetto che non sia possibile, trovo la documentazione non chiara, e ci sono post su questo sito che sembrano indicare che è possibile. Vedere here per esempio.eliminazione di un asset del rullo fotocamera utilizzando Photos framework
Nella mia prova app, prendo un asset dalla libreria:
var picker = UIImagePickerController()
picker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
picker.mediaTypes = [kUTTypeMovie]
Nel callback delegato, ho la NSURL del bene, e metterlo in un array:
let thePicked = info[UIImagePickerControllerMediaURL] as NSURL!
var videosToDelete: [NSURL] = [theURL]
e qui è la parte sono almeno fiducioso circa, dove ho la PhotoLibrary, e fare una richiesta di modifica per eliminare la risorsa:
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
let assetToDelete = PHAsset.fetchAssetsWithALAssetURLs(videosToDelete, options: nil)
PHAssetChangeRequest.deleteAssets(assetToDelete)
},
completionHandler: { success, error in
NSLog("Finished deleting asset. %@", (success ? "Success" : error))
})
Il gestore di completamento viene restituito correttamente, ma la risorsa non viene mai eliminata. Sto facendo qualcosa di sbagliato? O sto cercando di fare qualcosa di intrinsecamente non permesso, e non sto ricevendo il feedback corretto per questo?
Grazie, @ andrew-paul-simmons. 1) è corretto, come indicato nel codice sopra; 2) è leggermente diverso: la risorsa non viene eliminata, rimane nel rullino fotografico, sul posto. Posso comunque cancellarlo (usando l'app per le foto), va alla cartella "recentemente cancellata". Sto testando questo utilizzando un asset video creato (con la fotocamera) dalla stessa app. – coco