【发布时间】:2011-11-15 20:24:55
【问题描述】:
我如何检查一个特定的 NSString 是否在 NSArray 中 presnet?
【问题讨论】:
标签: iphone objective-c xcode nsstring nsarray
我如何检查一个特定的 NSString 是否在 NSArray 中 presnet?
【问题讨论】:
标签: iphone objective-c xcode nsstring nsarray
你可以这样做,
NSArray* yourArray = [NSArray arrayWithObjects: @"Str1", @"Str2", @"Str3", nil];
if ( [yourArray containsObject: yourStringToFind] ) {
// do found
} else {
// do not found
}
【讨论】:
Iteration 或 containsObject 是 order n 查找方式。
如果您想要恒定时间查找,您还可以维护一个像 NSSet 或 NSHashTable 这样的哈希表,但这会增加空间但节省时间。
NSArray* strings = [NSArray arrayWithObjects: @"one", @"two", @"three", nil];
NSSet *set = [NSSet setWithArray:strings];
NSString* stringToFind = @"two";
NSLog(@"array contains: %d", (int)[strings containsObject:stringToFind]);
NSLog(@"set contains: %d", (int)[set containsObject:stringToFind]);
【讨论】:
取决于您的需求。 indexOfObject 如果你关心平等(很可能),或者indexOfObjectIdenticalTo 如果你关心它实际上是同一个对象(即相同的地址)。
来源:
【讨论】: