【问题标题】:how to check if NSString = a specific string value?如何检查 NSString = 一个特定的字符串值?
【发布时间】:2011-11-08 03:15:20
【问题描述】:

您好,如果您可以检查 NSString 是否等于特定值(例如人名),我很高兴?

我的想法是这样的

if (mystring == @"Johns"){
    //do some stuff in here
}

【问题讨论】:

    标签: iphone ios nsstring


    【解决方案1】:
    if ([mystring isEqualToString:@"Johns"]){
        //do some stuff in here
    }
    

    【讨论】:

      【解决方案2】:

      这是您在某些情况下可能想要使用的另一种方法:

      NSArray * validNames = @[ @"foo" , @"bar" , @"bob" ];
      
      if ([validNames indexOfObject:myString].location != NSNotFound) 
      {
          // The myString is one of the names in the valid names array
      }
      

      或者,如果数组中有大量名称,则可以使用 NSSet,因为查找对象比在数组中更快((O(Log N)O(N)

      NSSet * validNamesSet = [NSSet setWithArray:validNames];
      
      if ([validNamesSet containsObject:myString]) 
      {
          // This is faster than indexOfObject for large sets
      }
      

      这些方法之所以有效,是因为NSSetNSArray 使用isEqual:,这将为NSString 实例调用isEqualToString:

      【讨论】:

      • 您什么时候想使用location 方法而不是带有isEqualToString 方法的for 循环?
      • @Pavan 它比 for 循环更容易使用indexOfObject(代码行更少)。除此之外几乎没有什么区别。 NSSet 方法可以比通过数组循环大集合更快,但在大多数情况下它并不重要。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      • 2011-07-08
      • 2022-12-18
      相关资源
      最近更新 更多