带有今天日期的 CKQuery
Posted
技术标签:
【中文标题】带有今天日期的 CKQuery【英文标题】:CKQuery with Todays Date 【发布时间】:2019-03-13 17:11:32 【问题描述】:真的很重视一些支持。
我正在设计一个 tvOS 应用程序,它在 tableView 中显示某些 CloudKit 内容,数据因当前日期而异。
每个日历日期对应于该类型中的数据。
例如RecordType“A13032019”与 2019 年 3 月 13 日有关。
我使用 ViewDidLoad 中触发的函数生成正确格式的日期(generateDate():
*
func generateDate()
let formatter = DateFormatter() //2016-12-08 03:37:22 +0000 formatter.dateFormat = "ddMMyyyy" let now = Date() let dateString = formatter.string(from:now) NSLog("%@", dateString) let generateOperationalDate = ("A\(dateString)") print(generateOperationalDate)
然后我尝试使用 generateOperationalData 在下面的 CKQuery 中运行:
func queryDatabase()
let query = CKQuery(recordType: "\(generateDate())", predicate: NSPredicate(format: "TRUEPREDICATE", argumentArray: nil)) let sort = NSSortDescriptor(key: "trainDepartureTime", ascending: true) query.sortDescriptors = [sort] database.perform(query, inZoneWith: nil) (records, _) in guard let records = records else return let sortedRecords = records
当我尝试运行它时,它会抛出一个线程错误,原因是“* Terminating app due to unaught exception 'CKException', reason: 'recordType can not be empty' * "
所以在我看来,queryDatabase 函数在 generateDate 函数之前运行,但是我尝试延迟 queryDatabase 函数,这仍然会引发相同的错误!
无论如何我可以在 queryDatabase 函数运行之前生成日期(通过 generateDate)吗?
谢谢
【问题讨论】:
【参考方案1】:您想编写 generateDate() 以便它返回一个字符串。然后,在 queryDatabase() 中,调用 generateDate(),这样就可以保证有一个值可以传递给“recordType”。
我还稍微压缩了通话内容。希望这会有所帮助。
func generateDate() -> String
let formatter = DateFormatter()
formatter.dateFormat = "ddMMyyyy"
let dateString = formatter.string(from:Date())
return "A\(dateString)"
func queryDatabase()
// this will make sure you have a String value
let type = generateDate()
// now you can pass it
let query = CKQuery(recordType: type, predicate: NSPredicate(value: true))
//...
【讨论】:
非常感谢 - 效果很好 - 非常有帮助。 很高兴听到这个消息。以上是关于带有今天日期的 CKQuery的主要内容,如果未能解决你的问题,请参考以下文章
带有日期(今天)的 Google 表格(脚本)中的 IF 函数
使用“CONTAINS”运算符时,带有 NSPredicate 的 CKQuery 失败