检查NSDictionary中的特定值

时间:2016-03-02 09:19:25

标签: ios objective-c

我目前正在开发一个应用程序,我想检查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是存储在字典中的数组。

2 个答案:

答案 0 :(得分:2)

对于此任务 - 在数组中查找具有特定键/值对的字典 - 谓词是合适的解决方案。

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"];

答案 1 :(得分:0)

也许这个?

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

OR

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