我有下面的函数验证另一个函数的返回(函数searchPlaces返回NSString)。当我运行它时,似乎没有调用if子句,因为NSLog(@“函数返回:%@”,nova url);出现在控制台中。
有人可以告诉我代码中是否有错误? (当然有错误!)
- (void) buttonPushRandomViewController1 {
UIViewController *randomViewController = [self randomViewController3];
NSString *novaurl = [self searchPlaces];
NSLog(@"Function Return: %@",novaurl);
if (novaurl == @"OK") {
randomViewController.title = @"Resultado";
[self.master pushViewController:randomViewController animated:YES];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:novaurl]];
[webView loadRequest:request];
}else if (novaurl == @"ZERO_RESULTS") {
UIAlertView *zeroResults = [[UIAlertView alloc] initWithTitle: @"Ops!" message: @"Sorry, nothing found!"
delegate: self cancelButtonTitle: @"OK" otherButtonTitles: nil];
[zeroResults show];
[zeroResults release];
}
}
提前致谢!
答案 0 :(得分:8)
您不应将NSString
与==
运算符进行比较。 ==
运算符对Objective-C对象类型执行引用相等:如果两个操作数都引用完全相同的对象,则它仅返回true。即使两个字符串是彼此的副本,==
如果引用不同的实例也将返回false。
您想要使用值相等。您可以使用-isEqualToString:
方法比较字符串:
if ([novaurl isEqualToString:@"OK"]) {
...
}
答案 1 :(得分:5)
您应该使用NSString的isEqualToString:
方法来检查字符串是否相等。 ==运算符执行指针比较,有时它会返回NO,尽管字符串的内容是相同的。