在FetchRequest中比较Core Data日期与Swift Date的异常排查
Core Data日期谓词筛选失效的解决办法
检查字段名匹配度:Core Data实体字段名严格区分大小写,确认
libCompInGameCreationDate和你在数据模型中定义的字段名完全一致,包括大小写、下划线等细节,拼写错误会直接导致谓词逻辑不生效。修正谓词写法:无需将
Date强制转为CVarArg,Swift的Date类型可以直接传入NSPredicate,修改代码为:let theDatePredicate = NSPredicate(format:"libCompInGameCreationDate < %@", latestDate)强制类型转换可能导致Core Data无法正确解析日期比较逻辑。
验证目标日期正确性:打印
latestDate确认其值是否符合预期,如果latestDate是一个极早的日期(比如1970-01-01),所有数据都会满足小于该日期的条件,自然返回全部条目。确认FetchRequest配置:确保你将谓词正确赋值给了FetchRequest的
predicate属性,示例代码如下:let fetchRequest: NSFetchRequest<YourEntityType> = YourEntityType.fetchRequest() fetchRequest.predicate = theDatePredicate
内容的提问来源于stack exchange,提问作者Ben Long
相关产品推荐
相关产品推荐

