Core Data谓词中获取指定类型所有子实体的关键路径及写法
Core Data 子实体筛选问题解答
问题1:筛选某类型所有子实体的关键路径
在Core Data中,要筛选指定子实体的所有实例,核心关键路径是 entity.name —— 该路径指向托管对象对应的Core Data实体名称,通过它可以精准匹配目标子实体的所有实例。
问题2:修正谓词以获取指定子实体的所有实例
你原有的谓词写法存在格式错误,需要调整为使用entity.name关键路径,并正确传入子实体名称字符串。修正后的代码如下:
// Fetch CfCategory from Core Data @FetchRequest(entity: CfCategory.entity(), sortDescriptors: [], predicate: NSPredicate(format: "%K == %@", #keyPath(NSManagedObject.entity.name), "CfSubcategoryA")) private var categories: FetchedResults<CfCategory>
补充说明:
- 若偏好简洁写法,也可直接使用字符串形式的关键路径:
predicate: NSPredicate(format: "entity.name == %@", "CfSubcategoryA") - 确保
"CfSubcategoryA"与你Core Data模型中定义的子实体名称完全一致,大小写敏感。 - 由于
CfCategory是抽象实体,直接查询它(不带谓词)默认会返回所有子实体的实例;仅当需要单独筛选某一个子实体的实例时,才需要添加上述谓词。
内容的提问来源于stack exchange,提问作者whaleshark
相关产品推荐
相关产品推荐

