2016-03-02 30 views
0

我目前正在一個應用程序,我想檢查特定的對象是否存在於NSDictionary或不。我試過這段代碼,但它似乎沒有工作。任何幫助將不勝感激!檢查NSDictionary中的某個值

for (int i=0; sizeofarray; i++) { 
    if ([[self.chat valueForKeyPath:@"text"] count] > 0) 
    { 
     NSDictionary* chatmessage=[self.chat objectAtIndex:i]; 
     if ([chatmessage[@"text"] isEqualToString:@"Guest787" ]) { 
      NSLog(@"this happened"); 
     }} 
} 

P.S sizeofarray是數組的長度,chat是存儲在字典中的數組。

+0

的'for'條件,如寫的,沒有任何意義。請檢查您的實際代碼以確保它是正確的。 – Avi

+0

@avi代碼不正確,這就是我需要幫助的原因。除了使用objectAtIndex的for循環外,沒有別的選擇。 –

+1

中間狀態沒有意義。如果'sizeofarray'非零,它將永遠循環。 – Avi

回答

1

對於此任務 - 在數組中找到具有特定鍵/值對的詞典 - 謂詞是一個合適的解決方案。

NSString *value = @"Guest787"; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"text == %@", value]; 
NSArray *result = [self.chat filteredArrayUsingPredicate:predicate]; 
BOOL valueExists = result.count > 0; 
NSLog(@"%d", valueExists); 

或帶鍵 - 值編碼(KVC)

BOOL valueExists = [[self.chat valueForKey:@"text"] containsObject:@"Guest787"]; 
+0

它的工作!非常感謝! –

0

也許這?

if ([self.chat containsObject:@"Guest787"]) { 
    NSLog(@"this happened"); 
} 

OR

for (NSString *message in self.chat) { 
    if ([message isEqualToString:@"Guest787"]) { 
     NSLog(@"this happened"); 
    } 
} 
+1

這是一個字典數組,而不是字符串,所以這是行不通的。 「 – trojanfoe

+0

」聊天是存儲在字典中的數組。「 – Pipiks

+0

他的意思是「'聊天'是一個字典數組」,由代碼證明。 – trojanfoe