【问题标题】:IF clause is not validating NSString function return?IF 子句不验证 NSString 函数返回?
【发布时间】:2011-10-16 20:16:27
【问题描述】:

我有下面的函数来验证另一个函数的返回(返回 NSString 的函数 searchPlaces)。当我运行它时,似乎没有调用 if 子句,因为 NSLog(@"Function Return: %@",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];
    }
}

提前致谢!

【问题讨论】:

    标签: objective-c ios


    【解决方案1】:

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

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

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

    【讨论】:

    • @CainaSouza:您尚未接受任何问题的答案。如果你发现这解决了你的问题,你应该accept it as the answer
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-02
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多