我创建了一个名为UITextField
的{{1}},一个名为textField
的{{1}}字符串和一个提交按钮。
我想要发生的是,如果用户输入NSArray
的文本包含keywordsArray
中的一个字符串,它会推送到一个视图控制器,如果不是,它会推送到另一个视图控制器
现在我的代码看起来像这样:
UITextField
然后它说
“不兼容的指针类型将'NSArray *'发送到'NSString *'类型的参数”
我如何做到这一点,如果有人输入“他很高”,它会推送到keywordsArray
,因为“tall”是一个关键字。
答案 0 :(得分:2)
这一行:
if ([self.textField.text isEqualToString:self.keywordArray])
是您的错误所在。基本上,将字符串与数组进行比较没有任何意义。
您应该检查文本字段中的text
是否包含数组中的任何单词,而不是您正在执行的操作。这意味着迭代数组并检查每个项目。
这看起来像是:
for (NSString *word in self.keywordArray) {
if ([self.textField.text rangeOfString:word].location != NSNotFound) {
[self.navigationController pushViewController:yesViewController animated:YES];
return YES;
}
}
[self.navigationController pushViewController:noViewController animated:YES];
return YES;
答案 1 :(得分:1)
基本上,我同意Wain的代码部分
for (NSString *word in self.keywordArray) {
if ([self.textField.text rangeOfString:word].location != NSNotFound) {
...
但是在BOOL函数中推送视图控制器是非常错误的。 我会写这样的方法:
// In your example, you missed to close quotes for word funny
self.keywordsArray=@[@"funny", @"tall", @"handsome"];
[submitButton addTarget:self action:@selector(showresponse:) forControlEvents:UIControlEventTouchUpInside];
-(void)showresponse:(UIButton *)sender{
// Initialize view controller which you'll need, not both.
if ([self containsKeyword:self.textField.text]) {
YesViewController *yesViewController=[[YesViewController alloc]init];
[self.navigationController pushViewController:yesViewController animated:YES];
} else {
NoViewController *noViewController=[[NoViewController alloc]init];
[self.navigationController pushViewController:noViewController animated:YES];
}
}
// Now this method can be reusable for any other field or controler
- (BOOL)containsKeyword:(NSString*)text {
for (NSString *word in self.keywordArray) {
if ([text rangeOfString:word].location != NSNotFound) {
return YES;
}
}
return NO;
}