Ios 使用;“时间间隔自现在起”;在SWIFT的谓语中
我正在尝试使用Cloudkit(SWIFT)查询过去1小时内创建的记录 我试过:Ios 使用;“时间间隔自现在起”;在SWIFT的谓语中,ios,swift,ios8,nspredicate,cloudkit,Ios,Swift,Ios8,Nspredicate,Cloudkit,我正在尝试使用Cloudkit(SWIFT)查询过去1小时内创建的记录 我试过: let predicate = NSPredicate(predicateWithFormat : "timeIntervalSinceNow %@ < %f", "creationTime", -3600) let predicate=NSPredicate(predicateWithFormat:“TimeIntervalenceNow%@
let predicate = NSPredicate(predicateWithFormat : "timeIntervalSinceNow %@ < %f", "creationTime", -3600)
let predicate=NSPredicate(predicateWithFormat:“TimeIntervalenceNow%@<%f”,“creationTime”,-3600)
没有成功。错误消息指的是分析错误
有人知道什么是正确的格式吗
n、 b
creationTime
是表中字段的名称您的谓词无效。看一看
应该在表达式的左侧使用。我假设您有一个对象数组,这些对象有一个名为creationTime
的属性。那么谓词应该如下所示:
NSPredicate(format: "creationTime.timeIntervalSinceNow > %d", -3600)
请注意,我使用了“大于”
运算符,而不是。您是在尝试对核心数据执行此操作,还是在尝试对CloudKit数据执行此操作。我认为它的对象和语法与coredata完全相同,因此您不太可能让它工作,因为商店中的日期无法理解timeintervalencenow
,您只需使用CKQuery
类引用中可用:。Swift和Objective-C的谓词格式字符串语法应该完全相同。我添加了另一种创建谓词的方法。它应该可以与CloudKit一起使用,但是我还没有测试它,因为我不想为此建立一个完整的CloudKit项目。谢谢。使它与您的格式一起工作-不过稍微做了一些调整。
let now = NSDate()
if let anHourAgo = NSCalendar.currentCalendar().dateByAddingUnit(
.HourCalendarUnit,
value: -1,
toDate: now,
options: NSCalendarOptions(0)) {
let predicate = NSPredicate(format: "creationDate > %@", anHourAgo)
let filtered = records.filteredArrayUsingPredicate(predicate!)
}