【发布时间】:2011-11-08 03:15:20
【问题描述】:
您好,如果您可以检查 NSString 是否等于特定值(例如人名),我很高兴?
我的想法是这样的
if (mystring == @"Johns"){
//do some stuff in here
}
【问题讨论】:
您好,如果您可以检查 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) 与 O(N))
NSSet * validNamesSet = [NSSet setWithArray:validNames];
if ([validNamesSet containsObject:myString])
{
// This is faster than indexOfObject for large sets
}
这些方法之所以有效,是因为NSSet 和NSArray 使用isEqual:,这将为NSString 实例调用isEqualToString:。
【讨论】:
location 方法而不是带有isEqualToString 方法的for 循环?
indexOfObject(代码行更少)。除此之外几乎没有什么区别。 NSSet 方法可以比通过数组循环大集合更快,但在大多数情况下它并不重要。