gpt4 book ai didi

iOS 简单谓词 'contains' 不工作

转载 作者:行者123 更新时间:2023-11-29 13:15:25 26 4
gpt4 key购买 nike

我有一个模型:

地点<--->>类别

执行以下查询时:

NSFetchRequest *req = [NSFetchRequest fetchRequestWithEntityName:@"Category"];
if(![searchText isEqualToString:@""] && searchText != nil){
req.predicate = [NSPredicate predicateWithFormat:@"(places.placeTitle contains %@) OR (places.details contains %@) OR (name contains %@)", searchText, searchText, searchText];
NSLog(@"ModelHelper.getResults: Search text given, creating predicate: %@", req.predicate);
}
req.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"name"
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)]];
NSFetchedResultsController *controller = [[NSFetchedResultsController alloc]initWithFetchRequest:req
managedObjectContext:context
sectionNameKeyPath:nil
cacheName:nil];
NSError *error = nil;
[controller performFetch:&error];

我收到不应该出现的匹配项,例如:

searchText = "1234"

第一个结果是:

category[0].name = "Bars"
category[0].places[0].placeTitle = "Aaa"
category[0].places[0].details = "Aaa"
category[0].places[1].placeTitle = "123456"
category[0].places[1].details = "123456"
category[0].places[2].placeTitle = "test"
category[0].places[2].details = "test"

我的谓词有什么地方做错了吗?谢谢。

最佳答案

来自documentation :

Important: You must not modify fetchRequest after invoking this method. For example, you must not change its predicate or the sort orderings.

移动这个片段:

if(![searchText isEqualToString:@""] && searchText != nil){
req.predicate = [NSPredicate predicateWithFormat:@"(places.placeTitle contains[c] %@) OR (places.details contains[c] %@) OR (name contains[c] %@)", searchText, searchText, searchText];
NSLog(@"ModelHelper.getResults: Search text given, creating predicate: %@", req.predicate);
}

在初始化 FRC 之前

关于iOS 简单谓词 'contains' 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15940321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com