J'enregistre des images dans un album personnalisé après la sélection ou l'achèvement de la caméra. Évidemment, après l'achèvement de la caméra, il n'y a qu'une seule image, mais lorsqu'un utilisateur sélectionne des images dans le sélecteur de galerie, dans le gestionnaire d'achèvement, lorsque je sauvegarde cette image dans l'album personnalisé, un double est TOUJOURS créé. Les deux dans la galerie ainsi que la photoAlbum racine. Partout, il semble. Je ne peux pas référencer l'ID pour voir s'il a été créé auparavant, car l'ID est en train d'être créé avec l'espace réservé.Swift 3 ou 4 L'enregistrement dans un album custum crée des images en double
Existe-t-il un moyen d'obtenir l'ID de référence d'image de base afin que je puisse associer CHAQUE image à l'original? Si je comprends bien, IOS (je déteste ios btw), enregistre seulement une image réelle et le reste ne sont que des pointeurs vers l'objet image d'origine. Si tel est le cas, je m'attendrais à ce qu'il y ait un moyen d'obtenir une référence solide à l'image originale et à partir de là, je puisse facilement gérer les ressources créées à partir de cette image de base.
public static func addNewImage(_ image:UIImage, toAlbum albumName:String,imageID:String?,onSuccess success:@escaping(String)->Void, onFailure failure:@escaping(Error?)->Void) {
guard let album = self.getAlbum(withName: albumName) else {
failure(SDPhotosHelper.albumNotFoundError)
return
}
var localIdentifier = String();
if(imageID != nil){
if(self.hasImageInAlbum(withIdentifier: imageID!, fromAlbum: albumName)){
failure(SDPhotosHelper.albumNotFoundError)
return;
}
}
PHPhotoLibrary.shared().performChanges({
let albumChangeRequest = PHAssetCollectionChangeRequest(for: album)
let assetCreationRequest = PHAssetChangeRequest.creationRequestForAsset(from: image)
//assetCreationRequest.location = "";
let placeHolder = assetCreationRequest.placeholderForCreatedAsset
albumChangeRequest?.addAssets([placeHolder!] as NSArray)
if placeHolder != nil {
localIdentifier = (placeHolder?.localIdentifier)!
}
}) { (didSucceed, error) in
OperationQueue.main.addOperation({
didSucceed ? success(localIdentifier) : failure(error)
})
}
}
Ceci est très utile! J'ai eu une question similaire ici https://stackoverflow.com/questions/47378305/how-do-i-copy-an-image-from-the-iphone-photos-library-to-my-album-without-having? noredirect = 1 # comment81709017_47378305 –