2013-04-28 125 views
0

我将不同的代码保存在数组中,现在要检查数组中是否有一个代码。检查数组是否包含特定的字符串

我搜索了一下四周,但没有工作......

这里你可以看到我的数组的外观:

2013-04-28 12:43:23.877 myApp[9422:907] PushArray: (
    { 
    code = 123; 
    titel = "Test 01"; 
}, 
    { 
    code = 456; 
    titel = "Test 02"; 
}, 
    { 
    code = 789; 
    titel = "Test 03"; 
} 
) 

我尝试这样做的检查:

NSString *code = [NSString stringWithFormat:@"123"];; 

if ([PushArray containsObject:code]) { 
    NSLog(@"Code true!"); 
}else { 
    NSLog(@"Code false!"); 
} 

但每次我得到“Code false!”back ..

回答

1

数组中的对象实际上是NSDictionary对象。因此,要比较数字,让我们历数阵列上,做从该字典对象的值比较:

NSNumber * code = [NSNumber numberWithInteger: 123]; 
for(NSDictionary * anEntry in pushArray) 
{ 
    NSNumber * numberFromEntry = [anEntry objectForKey: @"code"]; 
    if([code isEqualToNumber: numberFromEntry]) 
     NSLog(@"code true!"); 
} 

另外注意,我是从“PushArray”到“pushArray”改变了你的阵列的名称。标准Objective-C约定是使用小写字母表示变量&对象,并使用大写字母命名类。

(我的答案的原始版本 - 我很快就赶上和编辑 - 是比较字符串,但我猜测在字典对象的代码值实际上是数字,而不是字符串)

+0

哦该死的我忘记了这个数组中有一个字典:// 非常感谢,你的代码工作! – 2013-04-28 11:01:37

+0

有没有办法让“代码为真”或“代码为假”的NSString从“for”返回? – 2013-04-28 11:29:12

+0

代替“NSLog”(@“code true!”);'“,做一个”return @“代码true”;'“(假设函数的返回类型是一个NSString) – 2013-04-28 11:47:39

相关问题