你好,我想知道如何检查一个 NSString 对象是否等于一个特定的值,比如一个人的名字?
我的想法是:
if (mystring == @"Johns"){
//do some stuff in here
}
if ([mystring isEqualToString:@"Johns"]){
//do some stuff in here
}
这里是另一种你可能在某些情况下想要使用的方法:
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
}
NSSet
和NSArray
使用了isEqual:
,这将调用isEqualToString:
对于NSString
实例。
indexOfObject
比使用for循环更容易(代码行数更少)。除此之外,几乎没有什么区别。对于大型集合,NSSet方法可能比循环数组更快,但对于大多数情况来说,这并不重要。 - Robert