Ios 检查NSDictionary中的某个值

Ios 检查NSDictionary中的某个值,ios,objective-c,Ios,Objective C,我目前正在开发一个应用程序,我想检查NSDictionary中是否存在特定对象。我已经尝试过这个代码,但它似乎不起作用。任何帮助都将不胜感激 for (int i=0; sizeofarray; i++) { if ([[self.chat valueForKeyPath:@"text"] count] > 0) { NSDictionary* chatmessage=[self.chat objectAtIndex:i]; if (

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

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

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


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

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

也许是这个

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

也许是这个

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


写入的条件的
没有任何意义。请检查实际代码以确保其正确性。@avi代码不正确,这就是我需要帮助的原因。我别无选择,只能对objectAtIndex使用for循环。中间的条件没有意义。如果
sizeofarray
为非零,它将永远循环。您想知道该值在哪里(即索引),还是仅知道该值是否存在于数组中?您必须更清楚您实际需要的帮助。你说你想确认一个对象是否存在,但你似乎在检查天气是否有一个特定的值。同时,您的问题实际上可能是一个不正确的for-loop。编写的
for
条件没有任何意义。请检查实际代码以确保其正确性。@avi代码不正确,这就是我需要帮助的原因。我别无选择,只能对objectAtIndex使用for循环。中间的条件没有意义。如果
sizeofarray
为非零,它将永远循环。您想知道该值在哪里(即索引),还是仅知道该值是否存在于数组中?您必须更清楚您实际需要的帮助。你说你想确认一个对象是否存在,但你似乎在检查天气是否有一个特定的值。同时,您的问题实际上可能是一个不正确的for循环。这是一个字典数组,而不是字符串,所以这不起作用。“chat是存储在字典中的数组。”他指的是代码证明的“
chat
是一个字典数组”。这是一个字典数组,而不是字符串,所以这不起作用。“chat是存储在字典中的数组。”他的意思是“
chat
是字典数组”,代码证明了这一点。