Давайте разберемся:
let pointArray = tapEvent.map { return CGPoint() }
let filteredArray = pointArray.filter { $0 != nil }
let newPointArray = filteredArray.map { $0 }
let subscribed = newPointArray.subscribe { point in
print(point.element)
}
subscribed.disposed(by: bag)
Это может быть не на 100% идеально, но достаточно для некоторых разъяснений.
pointArray
будет массивом необязательных, пустых CGPoint
значений.
Поскольку они не являются обязательными, фильтр для удаления значений nil
не имеет смысла и является причиной первой ошибки. Просто исключите filter
.
Затем вы отображаете объекты в filteredArray
на себя. Опять же, это бессмысленно. Уберите вторую карту.
Вторая ошибка связана с point.element
. Я ничего не знаю о RxSwift и об этом конкретном методе, основанном на предупреждении, параметр point
замыкания является необязательным. Возможно, вам нужно добавить ?
перед .
.
При всем этом ваш код становится:
let pointArray = tapEvent.map { return CGPoint() }
let subscribed = pointArray.subscribe { point in
print(point?.element)
}
subscribed.disposed(by: bag)
Или написано в оригинальном формате:
let tapEvent: ControlEvent<UITapGestureRecognizer> = chargingView.rx.tapGesture()
tapEvent.map { return CGPoint() }
.subscribe { point in
print(point?.element)
}.disposed(by: bag)
Имеет ли смысл выполнить оставшиеся map
как есть, я понятия не имею. Кажется странным, но опять же, я не знаю RxSwift.