IF子句是不是验证NSString函数返回?

时间:2011-10-16 20:16:28

标签: objective-c ios

我有下面的函数验证另一个函数的返回(函数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];
    }
}

提前致谢!

2 个答案:

答案 0 :(得分:8)

您不应将NSString==运算符进行比较。 ==运算符对Objective-C对象类型执行引用相等:如果两个操作数都引用完全相同的对象,则它仅返回true。即使两个字符串是彼此的副本,==如果引用不同的实例也将返回false。

您想要使用值相等。您可以使用-isEqualToString:方法比较字符串:

if ([novaurl isEqualToString:@"OK"]) {
    ...
}

答案 1 :(得分:5)

您应该使用NSString的isEqualToString:方法来检查字符串是否相等。 ==运算符执行指针比较,有时它会返回NO,尽管字符串的内容是相同的。