Как получить список имен пользовательских фотоальбомов на iPhone или в iCloud

Я пытаюсь получить список названий фотоальбомов, будь то в телефоне или в облаке. У меня есть код, который я пытался запустить, но ничего не выходит.

Это мой код, который у меня есть, чтобы получить названия фотоальбомов.

import Photos
import UIKit
import Foundation

class CustomPhotoAlbum {

static let albumName = "Album"
static let sharedInstance = CustomPhotoAlbum()

var assetCollection: PHAssetCollection!

init() {

    func fetchAssetCollectionForAlbum() -> PHAssetCollection! {

        let fetchOptions = PHFetchOptions()
        fetchOptions.predicate = NSPredicate(format: "title = %@", CustomPhotoAlbum.albumName)
        let collection = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: fetchOptions)

        if let firstObject: AnyObject = collection.firstObject {
            return collection.firstObject
        }

        return nil
    }

    if let assetCollection = fetchAssetCollectionForAlbum() {
        self.assetCollection = assetCollection
        return
    }

    PHPhotoLibrary.shared().performChanges({
        PHAssetCollectionChangeRequest.creationRequestForAssetCollection(withTitle: CustomPhotoAlbum.albumName)
    }) { success, _ in
        if success {
            self.assetCollection = fetchAssetCollectionForAlbum()
        }
    }
}

func saveImage(image: UIImage) {

    if assetCollection == nil {
        return   // If there was an error upstream, skip the save.
    }

    PHPhotoLibrary.shared().performChanges({
        let assetChangeRequest = PHAssetChangeRequest.creationRequestForAsset(from: image)
        let assetPlaceholder = assetChangeRequest.placeholderForCreatedAsset
        let albumChangeRequest = PHAssetCollectionChangeRequest(for: self.assetCollection)
        albumChangeRequest?.addAssets([assetPlaceholder] as NSFastEnumeration)
    }, completionHandler: nil)
}

    func getAlbum(title: String, completionHandler: @escaping (PHAssetCollection?) -> ()) {
        DispatchQueue.global(qos: .background).async { [weak self] in
            let fetchOptions = PHFetchOptions()
            fetchOptions.predicate = NSPredicate(format: "title = %@", title)
            let collections = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: fetchOptions)

            if let album = collections.firstObject {
                completionHandler(album)
            }
            else {
                self?.createAlbum(withTitle: title, completionHandler: { (album) in
                    completionHandler(album)
                })
            }
        }
    }

}

Я пытаюсь получить список с помощью следующего кода. Но ничего не выходит.

                Section {
                    Button("Add photo album", action: {
                        CustomPhotoAlbum()
                        print("Button tapped")
                    })
                }

Может ли кто-нибудь сказать мне, что я делаю не так? Я просмотрел другие примеры, но все они, похоже, предназначены для более старых версий Swift.

0 ответов

Другие вопросы по тегам