Swift 4 NSPredicate 日期格式不起作用

Posted

技术标签:

【中文标题】Swift 4 NSPredicate 日期格式不起作用【英文标题】:Swift 4 NSPredicate date format not working 【发布时间】:2018-08-26 21:11:15 【问题描述】:

我正在尝试从用户的相机胶卷中获取过去 7 天内拍摄的照片和视频。

这是我的代码...

let oneWeekAgoDate = NSCalendar.current.date(byAdding: .weekOfYear, value: -1, to: NSDate() as Date)

fetchOptions.predicate = NSPredicate(format: "date > %@ && (mediaType = %d || mediaType = %d)",oneWeekAgoDate! as NSDate, PHAssetMediaType.image.rawValue, PHAssetMediaType.video.rawValue)

取自https://***.com/a/30520861/6633865

但是我的应用不断终止并显示此消息

获取选项中不支持的谓词:date > CAST(556405508.551209, "NSDate")

有什么想法吗?

谢谢

【问题讨论】:

您确定属性date 可用于您的 fetch 的目标类型吗? I can find creationDate or modificationDate,但没有 date 与您的问题无关,但使用CalendarDate,而不是NSCalendarNSDate @OOPer 宾果游戏!这就是我要找的页面,谢谢! @rmaddy 感谢您的提示。会做 【参考方案1】:
 var p: NSPredicate?
 let date = Date()
 p = NSPredicate(format: "mediaType = %d AND ( creationDate < %@ )",PHAssetMediaType.image.rawValue,date as NSDate)

再试一次!

【讨论】:

以上是关于Swift 4 NSPredicate 日期格式不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 动态生成 NSPredicate?

NSPredicate 对象模型数组过滤器在 Swift 4.0 中无法正常工作

NSPredicate'运算符'LIKE'不支持int类型'

swift - NSPREDICATE 失败 [重复]

我想要 swift3.0 的 NSPredicate 的数组过滤器数组

SWIFT:从文本字段格式化为日期不起作用