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

Cai*_*uza 1 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];
    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Ada*_*eld 8

您不应该将NSStrings与==运算符进行比较.在==操作者进行参考平等于Objective-C的对象类型的:它仅在两个操作数指的是完全相同的对象返回true.即使两个字符串是彼此的副本,==如果它们引用不同的实例,也将返回false.

您希望使用值相等.您可以使用以下-isEqualToString:方法比较字符串:

if ([novaurl isEqualToString:@"OK"]) {
    ...
}
Run Code Online (Sandbox Code Playgroud)


mur*_*rat 5

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