如何检查NSString是否等于特定字符串值?

71

你好,我想知道如何检查一个 NSString 对象是否等于一个特定的值,比如一个人的名字?

我的想法是:

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

148
if ([mystring isEqualToString:@"Johns"]){
    //do some stuff in here
}

4

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

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) vs O(N))

NSSet * validNamesSet = [NSSet setWithArray:validNames];

if ([validNamesSet containsObject:myString]) 
{
    // This is faster than indexOfObject for large sets
}

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

你何时想使用“location”方法而不是带有“isEqualToString”方法的for循环? - Pavan
1
@Pavan 使用indexOfObject比使用for循环更容易(代码行数更少)。除此之外,几乎没有什么区别。对于大型集合,NSSet方法可能比循环数组更快,但对于大多数情况来说,这并不重要。 - Robert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接