我有一个包含NSDictionaries
的数组。
[
{
"ObjectId": 20,
"ObjectName": "Leave Request",
"RequestItems": []
"ClassName": "req-auth"
},
{
"ObjectId": 22,
"ObjectName": "Cancel Leave Request",
"RequestItems": []
"ClassName": "req-auth"
}
我想检查此数组Leave Request
和Cancel Leave Request
个对象是否可用。所以我将通过ObjectName
搜索对象。但我不明白如何使用这些对象的1值来搜索这些对象。请帮我。
感谢
答案 0 :(得分:0)
试试这个
NSString *searchString = @"Cancel";
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
return [evaluatedObject[@"ObjectName"] localizedCaseInsensitiveContainsString:searchString];
}];
filteredContentList = [NSMutableArray arrayWithArray:[searchListValue filteredArrayUsingPredicate:predicate]];
答案 1 :(得分:0)
您可以尝试使用NSPredicate
。像这样:
-(NSArray *)array:(NSArray *)array filteredWithString:(NSString *)string{
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.ObjectName CONTAINS[cd] %@",string];
return [array filteredArrayUsingPredicate:predicate];
}
只需传入数组以使用要过滤的字符串进行过滤,然后将其调用到要过滤的位置。
一些事情:此处cd
用于执行不区分大小写的比较,如果您希望区分大小写,请从字符串中删除cd
。 ObjectName
是您要过滤的属性。如果您想要进行精确比较,可以将CONTAINS
更改为LIKE
。
答案 2 :(得分:0)
如果您只想从数组中的每个字典中获取objectName
,请执行以下操作:
for dict in arrayOfData{
if let strObjectName : String = dict["ObjectName"] as? String{
print(strObjectName)
}
}