我的def loadSet(path='/data/file.txt'):
datset={}
for line in open(path+'/file.txt'):
(userid,wordid)=line.split('\t')
dataset.setdefault(user,{})
dataset[userid][wordid]=float(wordid)
return dataset
包含NSArray
字符串,如下所示。
JSON
我想在“title”键下找到具有“plet”值的对象的索引。当我只是在[
{
"title":"find good book",
"isCompleted":true
},
{
"title":"complete work",
"isCompleted":false
},
{
"title":"check schedule",
"isCompleted":false
}
]
下方使用它时,它返回了每个对象,因为每个NSPredicate
个对象都有“isCompleted”作为键蜇。
JSON
我不想将NSPredicate* predicate = [NSPredicate predicateWithFormat:@"self CONTAINS[cd] %@", @"plet"];
转换为JSON
个对象。我不使用NSDictionary
,因为我要将此谓词应用于[NSPredicate predicateWithBlock:]
。根据文档,由NSFetchedResultsController
创建的NSPredicate
不能用于NSFetchedResultsController。
所以我的问题是,我可以使用正则表达式来解决这个问题吗?我对正则表达不太了解。有人可以举个例子吗?
答案 0 :(得分:0)
您可以使用predicateWithBlock方法创建谓词。在块内,检查dynamicVale是否包含要搜索的值。
代码:
NSArray *yourArray = ....;
NSString *searchText = ...;
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(NSDictionary * _Nonnull evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
NSArray *dynamicVales = [evaluatedObject valueForKeyPath: @"dynamicVales.value"];
return [dynamicVales containsObject:searchText];
}];
NSArray *filteredArray = [yourArray filteredArrayUsingPredicate:predicate];
从JhonyKutties答复。享受编码:)