Я унаследовал несколько старый проект, написанный на ReactiveSwift (v3.1.0) и ReactiveCocoa (v7.2.0). Когда я открыл его в Xcode 10.1, он был построен без проблем. Но когда я сделал то же самое в Xcode 10.3, я получаю сообщение об ошибке Неоднозначное использование оператора '‹~' в следующем блоке кода.
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, поэтому могу сделать еще хуже. К сожалению, на данный момент не может быть и речи об обновлении всего проекта для использования последних версий. Мне просто нужно, чтобы эта ошибка исчезла.