Я думал сделать это с помощью DidSet и установить его только один раз, примерно так:
Код: Выделить всё
var dogPicture : DogPicture? = nil {
didSet {
// Do something with the picture
}
}
func findPictureOfDog(_ sources) -> DogPicture? {
for source in sources {
let task = URL.Session.shared.dataTask(with: source) { (data, response, error) in
// error handling ...
if data.isWhatIWanted() && dogPicture == nil {
dogPicture = data.getPicture()
}
}
task.resume()
}
}
sources = ["yahoo.com", "google.com", "pinterest.com"]
findPictureOfDog(sources)
Я не знаю, как я мог бы сделать это указанным выше способом, потому что, если я ничего не найду, DidSet никогда не будет позвонят, но тогда я должен попросить у пользователя фотографию.
Плюс: isWhatIWanted() довольно дорог, поэтому было бы здорово, если бы был способ прервать выполнение обработчика после того, как я нашел DogPicture. .
Надеюсь, я ясно выразился и надеюсь, что кто-нибудь сможет мне помочь с этим!
С уважением и уважением спасибо, что уделили время
Подробнее здесь: https://stackoverflow.com/questions/601 ... r-only-one
Мобильная версия