【发布时间】:2014-03-16 01:51:23
【问题描述】:
我有一个由 5 个 NSArray 组成的 NSArray,每个 NSArray 都包含 NSDictionaries。字典只包含字符串。我正在尝试使用 NSPredicate 过滤掉特定的字典,但它似乎只适用于完全匹配。我希望它忽略任何标点符号,例如 : 或 -。这是我目前拥有的。
NSString *seriesTitle = @" Fullmetal Alchemist Brotherhood - ";
NSPredicate *titlePredicate = [NSPredicate predicateWithFormat:
@"series_title CONTAINS[cd]%@", seriesTitle];
NSArray *filtered = [arraytoEvaluate filteredArrayUsingPredicate:titlePredicate]
在“arraytoEvaluate”中是一个包含此键值对@"series_title" : @"Fullmetal Alchemist: Brotherhood" 的 NSDictionary。那是我希望它匹配的那个。即使我请求 [cd] 搜索,我的谓词也不会选择这个,我相信它会忽略标点符号/空格,对吗?
使用series_title LIKE[cd]%@给我这个崩溃:
'NSInvalidArgumentException', reason: 'Can't do regex matching on object
使用 BEGINSWITH 代替给我这个:
'NSInvalidArgumentException', reason: 'Can't do a substring operation with something that isn't a string
如果我准确地传入字符串,它会捡起它并给我包含包含匹配项的字典的数组,但前提是搜索词是完全匹配的。
此外,它会给我所有这些,而不是包含单个 NSDictionary 的 NSArray 包含匹配项。我不知道该怎么办。我知道filteredArrayUsingPredicate 应该返回一个数组,但是我需要针对包含搜索词匹配的特定 NSDictionary 遍历该数组。然而,这是次要问题。任何帮助将不胜感激。
【问题讨论】:
标签: ios objective-c nsarray nspredicate