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)