【问题标题】:What is the difference between NSString = @"HELLO" and NSString getting that same string using initWithContentsOfURLNSString = @"HELLO" 和 NSString 使用 initWithContentsOfURL 获取相同的字符串有什么区别
【发布时间】:2011-07-01 04:32:51
【问题描述】:

我有一个从 URL 获取内容的字符串,当我尝试使用它时,它并没有按照我认为的方式工作。

当我用这样的 URL 内容初始化 NSString 时:

NSString *strFromURL = [[NSString alloc] initWithContentsOfURL:someURLReturningTextHELLO encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",strFromURL); // returns "HELLO" // as expected

但是当我尝试时:

if (strFromURL == @"HELLO") { NSLog(@"IT WORKS"); } // This doesn't happen

当我执行相同的过程时:

NSString *mySimpleString = @"HELLO";
if (mySimpleString == @"HELLO") { NSLog(@"IT WORKS"); } // This works

所以,我的问题是,如何从 URL 获取内容,以便稍后在我的 IF 语句中使用?

*我是 Objective-C 的新手。谢谢!

【问题讨论】:

    标签: iphone objective-c xcode nsstring initwithcontentsofurl


    【解决方案1】:

    当您要求if (strFromURL == @"HELLO") 时,您是在比较对象 的相等性,而不是字符串。当您调用两个常量字符串的比较时,它可以工作,其他它无论比较对象中的字符串是否相等都会失败。

    请致电if ([strFromURL isEqualToString:@"HELLO"])

    【讨论】:

      【解决方案2】:

      对于对象,== 运算符测试指针是否相等。也就是说,如果指针都指向同一个对象,则这两个变量是相同的。从 URL 中获取的字符串与常量字符串不是同一个对象,因此它失败了。您想使用 NSString 的 isEqualToString: 方法,该方法测试字符串本身是否相等,而不是指针。

      【讨论】:

        【解决方案3】:

        您可以尝试与 isEqualToString 方法进行比较

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-06
          • 2011-11-10
          相关资源
          最近更新 更多