我是反应堆的新手,我需要帮助。我正在寻找,我无法弄明白。假设我有UIPickerView。在pickerView中有4个选项,每种语言都有一个例如德语,英语,西班牙语,法语。在选定的语言我需要发回缩写english - en,french - fr ... 我使用MVVM架构,这是我的ViewController中的方法。在该方法中,我绑定ViewModel和选定的属性。
$("#detailView").load(returndata.newurl).animate({ height: "" }, 2000);
" observeSelectedLanguage"是我的信号,其实施是:
- (void)bindeViewModel
{
RAC(self, selectedLanguageAbbreviation) = self.languageViewModel.observeSelectedLanguage;
}
" myValueString"是从枚举返回字符串的宏,所以英语,法语等是枚举的一部分。你能帮我解释一下如何发送所选语言的缩写吗?谢谢
答案 0 :(得分:2)
您正在寻找map
而不是filter
:
return [RACObserve(self, selectedLanguage) map:^id(NSString *value){
...
}];
其他建议
此外,在信号内部产生副作用(设置self.selectedLanguageAbbreviation
)不是很好的做法,如果可能应该避免。你可以改变你的逻辑:
将selectedLanguageAbbreviation
的值明确绑定到selectedLanguage
(在视图模型的-init
中):
RAC(self, selectedLanguageAbbreviation) = [RACObserve(self, selectedLanguage) map:^id(NSString* language) {
// do your mapping here
}];
然后您可以删除-observeSelectedLanguage
方法并直接绑定视图控制器的selectedLanguageAbbreviation
以查看模型的selectedLanguageAbbreviation
(如果仍然需要):
- (void)bindeViewModel
{
RAC(self, selectedLanguageAbbreviation) = RACObserve(self.languageViewModel, selectedLanguageAbbreviation);
}