2015-02-25 9 views
5

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?

risposta

0

Mi permetta di rendere sicuro di aver capito la domanda:

1) Si utilizza la foto framework per eliminare una risorsa con PHAssetChangeRequest.deleteAssets (assetToDelete)

2) si va al app Foto e visualizzare il Foto cancellate di recente, ma non vedi l'immagine/risorsa che hai appena eliminato nel cestino nell'app Foto.

Se questo è ciò che si verifica, è perché è stato eliminato un asset che non è incluso nel rullino fotografico degli utenti, ma è un PHAst dal photostream da un altro dispositivo. Quando elimini queste risorse, non vengono inviate al cestino e vengono eliminate in modo diverso rispetto a una foto normale. Consiglierei di andare all'app delle foto e di eliminare lo stesso bene: se si tratta di un asset di photostream, vedrete che non va mai nel cestino.

Se questo non è il problema che si sta affrontando, si prega di provare a fornire maggiori dettagli.

+0

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