核心数据:通过特定属性获取(加入关系)

Ara*_*and 4 iphone macos core-data nsfetchrequest

我有一个核心数据模型如下

替代文字

attributes物业Page是一组DictionaryEntry,他们是我的Page对象的值,很像一个标准NSDictionary(除了所有的keysvalues都是字符串)

我有一个Page具有DictionaryEntrykey="title"value="Home".我如何形成一个获取请求来加载该特定页面?

Fel*_*oux 7

您应该查看子查询的谓词语法.您不能使用通常的ANY关键字,因为这只允许您同时匹配一列而不是两列.

  NSString *keyValue = @"title";
  NSString *valueValue = @"home";

  NSFetchRequest *request = [[NSFetchRequest alloc] init];
  [request setEntity:[NSEntityDescription entityForName:@"Page" inManagedObjectContext:_context]];
  [request setPredicate:[NSPredicate predicateWithFormat:@"(SUBQUERY(attributes, $a, $a.key == %@ && $a.value == %@).@count != 0)", keyValue, valueValue]];
Run Code Online (Sandbox Code Playgroud)

更简单的谓词ANY attributes.key = "title" AND ANY attributes.value = "home"不起作用,因为它还返回具有两个词组的页面,例如key ='addr'/ value ='home'和key ='title'/ value ='pete'.