我使用的是ReactiveCocoa 4.0.4 alpha 1和Swift 2.1。我正在嘗試編寫一個擴展名,用於在UITextField
上創建最大文本限制。擴展ReactiveCocoa
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'過濾器返回:'回報self.filter {////////}' – ProblemSlover
@ProblemSlover沒有區別,仍是同樣的錯誤消息 – Chris
什麼返回塊像 返回'self.filter {(val:Bool) - >()next ///您的代碼}' – ProblemSlover