在 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。
我有一个 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。