我希望能够使用IN子句搜索实体的关系.我有以下设置:

我想发送一系列昵称,找到与这些昵称相关的所有人.
//array of names to find
let nameArray: [String] = ["Tom", "Tommy", "Thomas"]
// find all Persons who have a nickname associated with that person
let predicate = NSPredicate(format: "ANY Person.nickName in %@",nameArray)
var fetch = NSFetchRequest(entityName: "Person")
fetch.predicate = predicate
var fetchError : NSError? = nil
// executes fetch
let results = context?.executeFetchRequest(fetch, error: &fetchError)
Run Code Online (Sandbox Code Playgroud)
但是当我运行代码时,我收到以下错误:
'NSInvalidArgumentException',原因:'谓词的未实现的SQL生成:(任何Person.nickName IN {"Tom","Tommy","Thomas"})'
我在这做错了什么?如果我删除谓词搜索,它会返回所有结果,但是一旦我添加了这一行,一切都会中断.
我正在调用一个方法,它将枚举数组,创建一个NSURL,并调用一个返回JSON的NSURLSessionDataTask.循环通常运行大约10次,但可以根据日期而变化.
在开始处理数据之前,我需要等待for循环和所有NSURLSessionDataTasks完成.
我很难搞清楚所有工作何时完成.任何人都可以推荐任何方法或逻辑来了解整个方法何时完成(对于循环和数据任务)?
-(void)findStationsByRoute{
for (NSString *stopID in self.allRoutes) {
NSString *urlString =[NSString stringWithFormat:@"http://truetime.csta.com/developer/api/v1/stopsbyroute?route=%@", stopID];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLSessionDataTask *task = [self.session dataTaskWithRequest:request
completionHandler:^(NSData *data,
NSURLResponse *response,
NSError *error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
if(httpResponse.statusCode == 200){
NSError *jsonError = [[NSError alloc]init];
NSDictionary *stopLocationDictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&jsonError];
NSArray *stopDirectionArray = [stopLocationDictionary objectForKey:@"direction"];
for (NSDictionary * _stopDictionary in stopDirectionArray) {
NSArray *stop = [_stopDictionary objectForKey:@"stop"];
[self.arrayOfStops addObject:stop];
}
}
}];
[task …Run Code Online (Sandbox Code Playgroud)