Страницы

Поиск по вопросам

суббота, 6 июля 2019 г.

Swift вызов функции

У меня есть функция для проверки есть ли album в photos. У меня допустим есть "Golohram" album, но мне нужно проверить правда ли она существует на этом айфоне. Вопрос таков, как мне правильно ёё вызвать? Застрял на 2 части с completionHandler.
Функция:
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) }) } } }


Ответ

Когда вы вызовите эту функцию и передадите строку. Она стразу ничего не вернет, а отработает только тогда, когда сработает блок в теле вашей функции и вернет тот объект который вы положили в блок..
Сам код вызова функции должен примерно выглядеть вот так.
getAlbum(title: "Golohram") { [weak self] assetCollection in //assetCollection это просто имя которое я дал названию возвращаемого элемента guard let this = self else { return } //простая защита от потери памяти, замыкание является ссылочным типом guard assetCollection != nil else { return } //проверка на наличие объекта print(assetCollection!) //если объект сцществует, он будет распечатан }

Комментариев нет:

Отправить комментарий