Пила на бумагах Колина Эберхарта, плавающих вокруг, что он сам сделал эти расширения. Он написал подпискуNextAs, но не всех остальных в Свифте.mapAs, filterAs, subscribeNextAs для ReactiveCocoa 3.0
Неправильно ли?
extension RACSignal {
func subscribeNextAs<T>(nextClosure:(T) ->()) ->() {
self.subscribeNext {
(next: AnyObject!) ->() in
let nextAsT = next as! T
nextClosure(nextAsT)
}
}
func filterAs<T>(nextClosure:(T!) -> Bool) -> (RACSignal) {
return self.filter {
(next: AnyObject!) -> Bool in
if(next == nil){
return nextClosure(nil)
}else{
let nextAsT = next as! T
return nextClosure(nextAsT)
}
}
}
func mapAs<T>(nextClosure:(T!) -> AnyObject!) -> (RACSignal) {
return self.map {
(next: AnyObject!) -> AnyObject! in
if(next == nil){
return nextClosure(nil)
}else{
let nextAsT = next as! T
return nextClosure(nextAsT)
}
}
}
}
вау болен !! это синтаксический сахар «|>» для всего длинного кода, который раньше был там !? Большое вам спасибо за ответы на мои вопросы. Вы, кажется, гуру в ReactiveCocoa. –
Ну, это не синтаксический сахар, это совершенно новая архитектура. Это не 'RACSignal', это' Сигнал '. 'map' - это не метод экземпляра, возвращающий другой сигнал больше, это глобальная функция, возвращающая закрытие. '|>' - это просто оператор, который обертывает это закрытие вокруг получателя. Я просто использую ReactiveCocoa :) –
ReDetection
questino @ReDectection ugh Версия кандидата-кандидата действительно раздражает, чтобы интегрироваться в мой проект. Я выполнил их инструкции и принес файл .xcodeproject в свою папку с помощью xcode и попытался добавить ReactiveCocoa.framework с помощью «Вставить двоичный код» на вкладке «Общие», но он не будет создан ... вы сделали это вручную? Это было намного проще, используя Карфаген, но вручную это так больно –