Я унаследовал несколько старый проект, написанный на ReactiveSwift (v3.1.0) и ReactiveCocoa (v7.2.0). Когда я открыл его на Xcode 10.1, он был собран без проблем. Но когда я сделал то же самое на Xcode 10.3, я получаю ошибку Неоднозначное использование оператора '<~' </strong> в следующем блоке кода.
self.newMatchesTitleLabel.reactive.text <~ self.viewModel.newMatchesViewModel.data.producer.map { matches in
let newMatchesCount = matches.filter({ !$0.hasViewedOnce }).count
let newMatchesString = matches.count == 1 ? "New Match" : "New Matches"
return newMatchesCount == 0 ? newMatchesString : "\(newMatchesString) (\(newMatchesCount))"
}
Кажется, это из-за Все переменные и вычисления, сделанные внутри замыкания, компилятору почему-то не удается определить тип (?). Когда я комментирую эти части, компилятор отключается. Но, очевидно, мне нужно, чтобы они работали. Есть ли способ исправить это так, как оно есть?
Я попытался вынуть эти части из замыкания, объявив две переменные уровня класса.
self.newMatchesCount <~ self.viewModel.newMatchesViewModel.data.producer.map { $0.filter({ !$0.hasViewedOnce }).count }
self.newMatchesString <~ self.viewModel.newMatchesViewModel.data.producer.map { $0.count == 1 ? "New Match" : "New Matches" }
Что я сейчас не могу понять, как выполнить окончательную логическую проверку и присвоить это значение реактивному способу newMatchesTitleLabel
.
Я не очень хорошо разбираюсь в ReactiveSwift / ReactiveCocoa, поэтому, возможно, мне будет хуже , А обновление всего проекта для использования последних версий, к сожалению, пока не обсуждается. Мне просто нужна эта ошибка, чтобы go прочь.