更新时间:2023-11-10 08:48:40
你需要像这样predicate
你的数组
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.status == 'completed'"];NSArray *arr = [顺序过滤的ArrayUsingPredicate:谓词];//现在`arr` 包含所有`status` 键包含`completed` 值的`dictionary`.
I have an array of dictionaries in following format
[
{
"status":"not completed",
"rating":2
},{
"status":"completed",
"rating":2
},{
"status":"not completed",
"rating":"<null>"
},{
"status":"completed",
"rating":"<null>"},{
"status":"not completed",
"rating":"<null>"
}
]
and from this i want response as last object where status is completed and rating is null
output
{
"status":"completed",
"rating":"<null>"
}
how do i get second element easily without any big iteration.
in real case this array might contains 150-300 elements.
-(void)checkRecentUnratedOrder:(NSMutableArray *)order{
NSLog(@"trip log - %@",[order valueForKey:@"status"]); // total 5 objects inside array in that 4 of them are completed
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.status == completed"];
NSArray *arr = [order filteredArrayUsingPredicate:predicate];
NSLog(@"trip arr%@",arr);
}
console
You need to predicate
your array like this
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.status == 'completed'"];
NSArray *arr = [order filteredArrayUsingPredicate:predicate];
// Now `arr` contains all the `dictionary` that `status` key contain `completed` value.