很有价值的支持。
我正在设计一个tvOS应用程序,它在tableView中显示特定的CloudKit内容,根据当前日期的不同,数据是不同的。
每个日历日期对应于该类型中的数据。
例如,RecordType "A13032019“涉及2019年3月13日。
我使用在ViewDidLoad (generateDate())中触发的func以正确的格式生成日期:
*
func generateDate() { 让格式化程序= DateFormatter() /2016-12-08 03:37:22 +0000 formatter.dateFormat = "ddMMyyyy“now = Date() dateString = formatter.string(from:now) NSLog("%@",dateString)让generateOperationalDate = ("A(dateString)")打印(GenerateOperationalDate)}
然后,我尝试使用generateOperationalData在以下CKQuery中运行:
func queryDatabase() { 让查询=CKQuery=recordType(recordType:"(generateDate())",谓词:NSPredicate(格式:"TRUEPREDICATE",argumentArray: 0))让sort =NSSortDescriptor(键:"trainDepartureTime",升序: true) query.sortDescriptors =排序database.perform(查询,inZoneWith: nil) {(generateDate,_) in sort记录=记录{ return = records
当我尝试运行这个程序时,它会抛出一个线程错误,原因是"*终止应用程序由于没有异常'CKException',原因:'recordType不能是空的‘*’。“
因此,在我看来,queryDatabase函数运行在generateDate函数之前,但是我尝试延迟queryDatabase函数,这仍然会引发相同的错误!
我是否可以在运行generateDate函数之前生成日期(通过queryDatabase )?
谢谢
发布于 2019-03-15 02:43:48
您希望编写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))
//...
}https://stackoverflow.com/questions/55147670
复制相似问题