2016-07-16 22 views
1

我有字典的数组在下面的格式如何从状态为完成的NSMutableArray获取最后一个元素?

[ 
{ 
"status":"not completed", 
"rating":2 
},{ 
"status":"completed", 
"rating":2 
},{ 
"status":"not completed", 
"rating":"<null>" 
},{ 
"status":"completed", 
"rating":"<null>"},{ 
"status":"not completed", 
"rating":"<null>" 
} 
] 

从这个我想回应的最后一个对象,其中状态完成,评级是空

output 
{ 
    "status":"completed", 
    "rating":"<null>" 
} 

我如何轻松搞定第二元件,而不任何大的迭代。

在实际情况下,此数组可能包含150-300个元素。

-(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); 




} 

控制台 enter image description here

+0

开始和向后遍历。只要您找到“状态”为“已完成”的元素,请将其返回。 – smarx

回答

1

您需要在阵列年底predicate您的数组像这样

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.status == 'completed'"]; 
NSArray *arr = [order filteredArrayUsingPredicate:predicate]; 
// Now `arr` contains all the `dictionary` that `status` key contain `completed` value. 
+0

我可以在谓词中添加多个条件吗? – Bangalore

+1

是的,使用分隔符'和'/'或'根据条件。 –

+0

是的,你可以添加多个条件。 –

相关问题