如何在目标C中搜索NSArray
NSString* firstLetter;
for(NSString* currentString in yourArray)
{
firstLetter = [NSString stringWithFormat:@"%c", [currentString characterAtIndex:0]];
if([firstLetter isEqualToString:@"c"])
{
// NAME OK
}
else
{
// NAME WRONG
}
}
另一种方式做,这是enumerateObjectsUsingBlock
:
[yourArray enumerateObjectsUsingBlock:^(id name,NSUInteger idx,BOOL *stop) {
if ([name characterAtIndex:0] == 'c') {
NSLog(@"Name begins with c: %@",name);
}
}];
(也请注意,你想测试除了“C”“C”,如果你的输入是不是所有小写)
+1。我感兴趣的是为什么你选择了块枚举而不是for循环。个人喜好或特定原因? – 2011-02-01 14:44:35
如果您希望在第一场比赛中停止搜索,那么使用块(* stop = true)比使用直接'for ... in'快速枚举更容易。如果需要,块构造也可以更容易并行化操作(在' - [NSArray enumerateObjectsWithOptions:usingBlock:]'上使用'NSEnumerationConcurrent'选项)。 – 2011-02-01 14:50:07
它还可以轻松访问对象的索引,在使用快速枚举时需要更多的工作。 – Abizern 2011-02-18 12:25:08
为什么%d?你试过这个吗? – 2011-02-01 14:34:59
糟糕!编辑 – MathieuF 2011-02-01 16:20:09
这是非常低效的。它为'yourArray'中的每个项目创建一个新的格式化字符串并执行字符串比较。 – rpetrich 2011-03-12 07:40:58