2015-05-27 52 views
0

我使用RACObserve創建信號,但rac_textSignal沒問題時它不能正常工作。 這裏是我的代碼:看來RACObserve不能正常工作

[RACObserve(self, searchText.text); subscribeNext: ^(id newName){ 
    NSLog(@"newName:%@", newName); 
}]; 
[self.searchText.rac_textSignal subscribeNext: ^(id newName){ 
    NSLog(@"newName:%@", newName); 
}]; 

當應用程序中運行時,信號打印出每次我更改文本字段的時間了newName用零value.But,只有第二signl將工作和打印文本值中的最新文本。第一個信號從不打印任何東西。

+5

'RACObserve'只適用於鍵值兼容屬性,其中'UITextVIew'和'UITextField'的'text'不是(因此包含'rac_textSignal'助手)。 –

+0

明白了。非常感謝你。但是,我怎麼知道一個屬性是否符合鍵值? – sevenkplus

+0

:(據我所知,它是純粹的民間傳說。*一些*庫 - 我的意思是一小部分 - 明確記錄KVO對物業的遵從性,其他人則假設所有物業都符合KVO標準,其他則不承擔任何責任。 'UIKit',你應該假設* no *屬性是KVO兼容的,即使它現在有效,未來版本的iOS可能會刪除該屬性,它只是碰巧在一些屬性上「偶然」發揮作用 –

回答

0
RACSignal * searchSignal = [RACSignal merge:@[RACObserve(self.searchTextfield, text), self. searchTextfield.rac_textSignal]]; 

searchSignal將是火與任何searchTextField變化 - 在代碼searchField.text財產或者用戶。