Swift NSPredicate:无法分析关系的格式字符串

Swift NSPredicate:无法分析关系的格式字符串,swift,core-data,nspredicate,entity-relationship,one-to-one,Swift,Core Data,Nspredicate,Entity Relationship,One To One,我有两个名为“CIUser”和“CICast”的实体。“CIUser”实体与名为“cast”的“CICast”具有一对一的关系 现在,我的要求是获取当前处于活动状态且lastUpdate小于计算日期的所有用户。所以我准备了我的取回请求 let time = //an calculated NSDate object let fetchRequest = NSFetchRequest(entityName: "CIUser") fetchRequest.predicate = NSPredica

我有两个名为“
CIUser
”和“
CICast
”的实体。“
CIUser
”实体与名为“
cast
”的“
CICast
”具有一对一的关系

现在,我的要求是获取当前处于活动状态且lastUpdate小于计算日期的所有用户。所以我准备了我的取回请求

let time = //an calculated NSDate object

let fetchRequest = NSFetchRequest(entityName: "CIUser")
fetchRequest.predicate = NSPredicate(format: "isLive == %@ AND cast.lastUpdate <= %@", NSNumber(bool: true), time)
let time=//计算的NSDate对象
let fetchRequest=NSFetchRequest(entityName:“CIUser”)
fetchRequest.predicate=NSPredicate(格式:“isLive==%@和cast.lastUpdate问题在于“cast”是谓词格式中的保留字
语法,并且保留字不区分大小写。所以这是冲突的
你们的关系被命名为“演员”

作为解决方法,请使用
%K
键路径替换:

fetchRequest.predicate = NSPredicate(format: "isLive == %@ AND %K <= %@",
                            NSNumber(bool: true), "cast.lastUpdate", time)
有关详细信息,请参阅 在“谓词编程指南”中

fetchRequest.predicate = NSPredicate(format: "isLive == %@ AND %K <= %@",
                            NSNumber(bool: true), "cast.lastUpdate", time)
fetchRequest.predicate = NSPredicate(format: "%K == %@ AND %K <= %@",
                           "isLive", NSNumber(bool: true),
                           "cast.lastUpdate", time)