【发布时间】:2015-11-08 05:52:18
【问题描述】:
我正在使用 ReactiveCocoa 4.0.4 alpha 1 和 Swift 2.1。我正在尝试编写一个在UITextField 上创建最大文本限制的扩展。
extension RACStream {
public func max(textField: UITextField, max: Int) -> RACStream! {
return filter { next in
if let str = next as? String {
let ret = str.characters.count < max
if !ret {
textField.text = str[0..<max-1]
}
return ret
}
return true
}
}
}
self.inputTextField.rac_textSignal()
.max(self.inputTextField, max: 7)
.throttle(0.25)
.subscribeNext { (obj: AnyObject!) -> Void in
let input = Int(obj as! String)
print(input)
}
当我尝试调用 max 时出现错误。它告诉我Value of type RACStream has no member throttle。如果我在throttle 之后调用max,它会给出类似的错误。
我查看了RACStream 类检查过滤器。因为它返回Self!,它指的是RACStream,所以我假设当我扩展类时,通过返回RACStream! 会导致类似的行为。为什么我的管道的其余部分不响应我的扩展功能?
【问题讨论】:
-
尝试使用
self过滤器返回:return self.filter{ //////// } -
@ProblemSlover 没有区别,还是一样的错误信息
-
返回块怎么样 return
self.filter { (val: Bool ) -> () next in /// Your code } -
我刚刚尝试
return self.filter { (next: AnyObject!) -> Bool in /// },结果相同。
标签: swift swift2 reactive-cocoa