Я написал функцию, которая выполняет итерации через супервизоры данного UIView, чтобы получить ссылку на конкретный подкласс UIView, если он присутствует (в данном случае UITableView). Это прекрасно работает с использованием императивного стиля, но, похоже, это проблема, которая хорошо зарекомендовала бы себя в «Железнодорожно-ориентированном программировании». Поскольку я все еще чувствую свою функциональность, может ли кто-нибудь предложить более элегантную функциональную версию этой функции?Поиск иерархии UIView с использованием функционального Swift
func findTableView(var view: UIView) -> UITableView? {
var table: UITableView? = nil
while table == nil {
guard let superView = view.superview else { return nil }
view = superView
table = view as? UITableView
}
return table
}
Вот и все! Я знал, был бы более кратким. Я не думаю, что вы могли бы разобраться в этом? У меня есть небольшая концептуальная проблема, понимающая, что делает код. – rustproofFish
Обновлен ответ. – rintaro
Спасибо! Очевидно, когда вы видите расширенную версию. Использование flatmap() меня сбило с толку, но теперь я понимаю, что это довольно хитрый способ справиться с ноль-событием, когда у вас заканчиваются супервизоры. – rustproofFish