Cod*_*oob 9 predicate core-data ios swift
我有一个相当棘手的问题,我还没有找到答案,并希望你能帮忙!我的情况是这样的:我在Core Data中有以下对象模型
场景< - >>字符< - >>线条
实体具有以下关系:Scenes-> toCharacters-> Characters-> toLines-> Lines
我想要完成的是获取所有存在实际拥有行的字符的场景.
我读过的每篇文章都只谈到了"走图"这个问题,而且这个工作有效,但并不是一直到有线实体.
例如,这个谓词工作正常,深入一级并检索包含字符的所有场景:
let scene_ent:NSEntityDescription = NSEntityDescription.entityForName("Scenes", inManagedObjectContext: context)
scenerequest.entity = scene_ent
let predicate:NSPredicate = NSPredicate(format: "toCharacters.@count > 0")
scenerequest.predicate = predicate
Run Code Online (Sandbox Code Playgroud)
当我尝试修改谓词而不是检索包含具有行的字符的所有场景时:
let predicate:NSPredicate = NSPredicate(format: "toCharacters.Characters.toLines.@count > 0")
Run Code Online (Sandbox Code Playgroud)
我收到错误'Unsupported function expression count:(toCharacters.Characters.toLines)'
我在这里缺少一些非常简单的东西吗?
谢谢!
Mar*_*n R 13
谓词中的关键路径仅使用关系,而不使用实体名称
NSPredicate(format: "toCharacters.Characters.toLines.@count > 0")
Run Code Online (Sandbox Code Playgroud)
应该
NSPredicate(format: "toCharacters.toLines.@count > 0")
Run Code Online (Sandbox Code Playgroud)
但这可能也行不通.这可能有用(目前无法测试):
NSPredicate(format: "ANY toCharacters.toLines.@count > 0")
Run Code Online (Sandbox Code Playgroud)
而且我很确定这会奏效:
NSPredicate(format: "SUBQUERY(toCharacters, $c, $c.toLines.@count > 0).@count > 0")
Run Code Online (Sandbox Code Playgroud)
更新:正确的解决方案是
NSPredicate(format: "SUBQUERY(toCharacters, $c, ANY $c.toLines != NULL).@count > 0")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4063 次 |
最近记录: |