Ios 使用NSPredicate筛选数组的数组
我有以下情况:Ios 使用NSPredicate筛选数组的数组,ios,objective-c,nsarray,nspredicate,Ios,Objective C,Nsarray,Nspredicate,我有以下情况: NSArray( NSArray( string1, string2, string3, string4, string5, ) , NSArray( string6, string7, string8, string9, string10, ) ) 现在我需要一个谓词来返回包含特定
NSArray(
NSArray(
string1,
string2,
string3,
string4,
string5,
)
,
NSArray(
string6,
string7,
string8,
string9,
string10,
)
)
现在我需要一个谓词来返回包含特定字符串的数组。
e、 g.包含string9->I的Filter数组应该返回整个第二个数组,因为我需要处理该数组中的其他字符串。有什么想法吗?据我所知,您不能将其作为一行程序,因此您应该使用
predicateWithFormat:
而不是predicateWithBlock:
像这样的东西可以满足你的需要
NSString *someString = @"Find me"; // The string you need to find.
NSArray *arrayWithArrayOfStrings = @[]; // Your array
[arrayWithArrayOfStrings filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(NSArray *evaluatedArray, NSDictionary *bindings) {
return [evaluatedArray indexOfObject:someString] != NSNotFound;
}]];
更新:
Martin R证明我错了:)只是为了完整性:可以使用predicateWithFormat:
:
NSArray *array = @[
@[@"A", @"B", @"C"],
@[@"D", @"E", @"F"],
];
NSString *searchTerm = @"E";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY SELF == %@", searchTerm];
NSArray *filtered = [array filteredArrayUsingPredicate:predicate];
NSLog(@"%@", filtered);
输出:
(
(
D,
E,
F
)
)
(
(
D
E
F
)
)
如果有用,请查看并回复,或者任何问题+1,我正在使用子查询进行此操作,
[NSPredicate predicateWithFormat:@“子查询(SELF,$content,$content==[c]@)”,string]
,但这不起作用。有什么建议吗?@Anupdas:你就快到了,@“子查询(SELF,$content,$content==[c]]@.@count>0”
有效。@MartinR真棒,它有效。因此,子查询的结果应该与一些相等,以便甚至形成谓词。Thank:)@Anupdas:没错,子查询返回一个集合,但谓词的计算结果必须为true或false。是否可以只将E作为嵌套数组的元素