indexOfObject无法正确匹配

时间:2011-01-31 14:59:12

标签: objective-c arrays cocoa cocoa-touch string

我几天都遇到了这个问题,我无法摆脱它。 我在网上搜索过,但找不到任何有用的东西来解决我的问题。

这是情景。

我有一个字符串数组,其中包含从coredata sqlite db中获取的一堆id 我想知道这个数组中某个元素的索引。

我的第一个解决方案就像使用indexOfObject

一样简单
-(NSInteger) getPageId:(NSString *)symbol_id {
    NSInteger refId = [myIds indexOfObject:symbol_id];
    // .. stuff ..
    return refId;
}

现在,我不知道为什么,但函数的返回值始终是NSNotFound。 如果我通过NSLog打印出值

NSLog(@"%@\n%@", myIds, symbol_id);

我可以清楚地看到我正在搜索的值计算出数组的元素。

我甚至尝试过最愚蠢的解决方案,比如通过isEqual函数将匹配探测到for循环中:

int idx = 0;
for(NSString *tok in myIds) {
   if([tok isEqual:synmbol_id])
   {
     NSLog(@"yay, a match was encountered!!");
     return idx;
   }
   idx++;
}

但执行永远不会进入NSLog。

我不知道在哪里敲我的头。

希望你们中的一些人已经明白这一点并向我解释这一点。

事先提前

ķ

1 个答案:

答案 0 :(得分:2)

尝试打印阵列上的所有元素,如下所示:

for(NSString *tok in myIds) {
   NSLog(@"On the array [%@]", tok);
}

也许在\t阻止\n消息按预期运行时,有一个TAB NSString,一个输入isEqual或一些奇怪的东西。通常这些字符很难在常规调试器上找到。这就是为什么我建议将字符串括在[]