【发布时间】:2016-05-10 16:31:13
【问题描述】:
我正在尝试为 Core Data 中的 Date 属性创建 NSDates 数组(保存日期数组)。所以我可以在日历上显示保存项目的日期。我已尝试使用以下代码,但出现错误:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无法解析格式字符串“savedTime”
func datesWithSavedData() -> [NSDate] {
let fetchRequest = NSFetchRequest(entityName: "UserData")
fetchRequest.predicate = NSPredicate(format: "savedTime'")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "savedTime", ascending: false)]
do {
let results =
try managedObjectContext.executeFetchRequest(fetchRequest) as? [NSDate]
selectedDates = results!
print(selectedDates)
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
return selectedDates as! [NSDate]
}
【问题讨论】:
-
NSPredicate(format: "savedTime'")没有意义。谓词用于过滤结果集,那么你想实现什么?如果您想要所有条目,请省略谓词。 -
我已经尝试过了,在 selectedDates = results 行上出现“致命错误:在展开可选值时意外发现 nil”的错误!
-
日期,我将它们保存为 nsdate。
-
executeFetchRequest默认总是返回[NSManagedObject]。但是您可以通过将请求的resultType设置为.DictionaryResultType和propertiesToFetch来获取所需属性的数组,从而获得一组简单的字典。然后您可以使用map函数或KVC 来获取您的NSDate数组。 -
这可能会有所帮助:stackoverflow.com/questions/28054621/…(现已更新为 Swift 2)
标签: ios arrays swift core-data nspredicate