2013-04-28 128 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

相關問題