Ios 我们如何知道相册中是否已经存在图像?

Ios 我们如何知道相册中是否已经存在图像?,ios,swift,phasset,phassetcollection,Ios,Swift,Phasset,Phassetcollection,我以编程方式创建了一个相册。在添加新图像之前,我想检查相册中是否已经存在图像。 您可以使用下面的代码进行检查 CustomAlbum.shared.saveImage(图像:UIImage()) 像这样保存图像 import Foundation import Photos class CustomAlbum { static let albumName = "xyz" static let shared = CustomAlbum() var assetCollecti

我以编程方式创建了一个相册。在添加新图像之前,我想检查相册中是否已经存在图像。 您可以使用下面的代码进行检查 CustomAlbum.shared.saveImage(图像:UIImage()) 像这样保存图像

import Foundation
import Photos
class CustomAlbum {
    static let albumName = "xyz"
    static let shared = CustomAlbum()
    var assetCollection: PHAssetCollection!
    init() {
        func fetchAssetCollectionForAlbum() -> PHAssetCollection! {
            let fetchOptions = PHFetchOptions()
            fetchOptions.predicate = NSPredicate(format: "title = %@", CustomAlbum.albumName)
            let collection = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: fetchOptions)
            if let _: AnyObject = collection.firstObject {
                return collection.firstObject!
            }
            return nil
        }
        if let assetCollection = fetchAssetCollectionForAlbum() {
            self.assetCollection = assetCollection
            return
        }
        PHPhotoLibrary.shared().performChanges({
            PHAssetCollectionChangeRequest.creationRequestForAssetCollection(withTitle: CustomAlbum.albumName)
        }) { _, _ in
            self.assetCollection = fetchAssetCollectionForAlbum()
        }
    }

    func saveImage(image: UIImage) {
        if assetCollection == nil { return }
        PHPhotoLibrary.shared().performChanges({
            let assetPlaceholder = PHAssetChangeRequest.creationRequestForAsset(from: image).placeholderForCreatedAsset
            let albumChangeRequest = PHAssetCollectionChangeRequest(for: self.assetCollection)
            let assetEnumeration: NSArray = [assetPlaceholder!]
            albumChangeRequest?.addAssets(assetEnumeration)
        }, completionHandler: nil)
    }
    func allPhotos(albumName: String = "xyz", albumImages: @escaping ([UIImage]) -> Void) {
        let group = DispatchGroup()
        var images: [Image] = []
        let fetchOptions = PHFetchOptions()
        fetchOptions.predicate = NSPredicate(format: "title = %@", albumName)

        let resultCollections = PHAssetCollection.fetchAssetCollections(
            with: .album,
            subtype: .albumRegular,
            options: fetchOptions)

        resultCollections.enumerateObjects({
            (object, index, stop) -> Void in
            let collection = object
            let result = PHAsset.fetchAssets(in: collection, options: nil)
            result.enumerateObjects({
                (object, index, stop) -> Void in
                group.enter()
                images.append(object.getfullImage())
                group.leave()
            })
        })
        group.notify(queue: DispatchQueue.main) {
            albumImages(images)
        }
    }
}
使用这段代码,我获取相册的所有图像,并与我想要保存的图像进行比较

    PHPhotoLibrary.shared().allPhotos { (images) in 
    let image = UIImage()

}

分享您迄今为止尝试过的内容。请添加一些代码。您希望如何根据名称检查它是否存在?我们可以基于UIImage()对象进行比较吗?或者我们能得到保存在相册中的准确图像吗?我们可以从PHAsset获取图像。谢谢,但我不是说在文档目录中保存图像。如果我删除应用程序,我保存在文档目录中的所有图像都将被删除。我所做的是将图片直接保存在我创建的相册下的照片中。
 class func getPhotofolder() -> String{
    let fileManager = FileManager.default
    let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent("hsafetyPhoto") //hsafetyPhoto is my folder name to store the image  and if doesnt exist then system will create one 
    if !fileManager.fileExists(atPath: paths){
        try! fileManager.createDirectory(atPath: paths, withIntermediateDirectories: true, attributes: nil)

    }else{
        print("Already dictionary created.")
    }

    return  paths
}


//Save Image At hsafetyPhoto Document Directory
class func saveImageDocumentDirectory(photo : UIImage, photoUrl : String) -> Bool{

    let fileManager = FileManager.default

    let paths =  Utility.getPhotofolder().stringByAppendingPathComponent(pathComponent: photoUrl)
    print("image's path \(paths)")
    if !fileManager.fileExists(atPath: paths){

        let imageData = UIImageJPEGRepresentation(photo, 0.5)
        fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil)

        if !fileManager.fileExists(atPath: paths){
            return false
        }else{
            return true
        }

    }else{
        print(paths)
        let imageData = UIImageJPEGRepresentation(photo, 0.5)
        fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil)
        if !fileManager.fileExists(atPath: paths){
            return false
        }else{
            return true
        }

    }


}