在 NSArray [json] 中查找一个值

Find a value in NSArray [json]

我有一个 json 对象数组,如下所示:

array : (
    {
expiryDate = "2016-04-22T00:00:00Z";
    id = "4dad2aeb-efa3-45ca-8d1a-7382851c56d7";
    name = "demo1";
    value = 200;
},
    {
    expiryDate = "2016-06-20T00:00:00Z";
    id = "28e0df69-3e8f-413d-a6c6-3d4cdad544f9";
    name = "Demo 2";
    value = 200;
},
    {
    expiryDate = "2016-06-19T00:00:00Z";
    id = "2e1f452e-ba53-4d4c-a4fa-e15442057b8b";
    name = "demo3";
    value = 214;
})

我有一个字符串 string = 2e1f452e-ba53-4d4c-a4fa-e15442057b8b

我必须检查 NsString 是否存在于 NSArray 中。我正在考虑将数组转换为字典并进行搜索。请在这部分帮助我。

假设您的 NSArray 是数组。使用下面的代码行。

 BOOL flag= [array valueForKey:@"id"] containsObject: @"2e1f452e-ba53-4d4c-a4fa-e15442057b8b"];

 if(flag){
 NSInteger index=[array valueForKey:@"id"] indexOfObject: @"2e1f452e-ba53-4d4c-a4fa-e15442057b8b"];
 NSString *str = [array valueForKey:@"id"]objectAtIndex:index];
}
NSString *str = @"2e1f452e-ba53-4d4c-a4fa-e15442057b8b";  
if([array[@"id"] isEqualToString:str]){
NSLog(@"yes.. string is present");
}

()表示的数组是一个普通的NSArray,你可以这样访问它的元素:

yourArray[index]

索引是一个以0开头的整数。您还可以使用我在下面向您展示的 for... in... 语法遍历数组。

{} 括号代表一个 NSDictionary(键值对),您可以这样访问它们:

yourDictionary[@"key"]

作为 @"key" 常态 NSString

为了比较字符串,您可以使用 NSString class 中的 isEqualToString: 实例方法,如下所示:[stringOne isEqualToString:stringTwo]

所以你的代码应该是这样的(考虑到它是一个字典数组):

BOOL stringExists = NO;
for (NSDictionary *elem in array) {
    if ([elem[@"id"] isEqualToString:@"yourStringHere"]) {
        stringExists = YES;
        break;
    }
}
if (stringExists) {
    NSLog(@"the string exists!");
}

抱歉格式问题,我是用手机写的。如果有人想编辑它,我提前感谢him/her。