Ios Swift从ManagedObjectContext FetchRequest获取日期数组
我试图为核心数据中的日期属性创建一个NSDates数组(一个保存日期数组)。因此,我可以在日历上显示保存项目的天数。我已尝试使用以下代码,但出现错误: 由于未捕获异常“NSInvalidArgumentException”而终止应用程序,原因:“无法分析格式字符串“savedTime”Ios Swift从ManagedObjectContext FetchRequest获取日期数组,ios,arrays,swift,core-data,nspredicate,Ios,Arrays,Swift,Core Data,Nspredicate,我试图为核心数据中的日期属性创建一个NSDates数组(一个保存日期数组)。因此,我可以在日历上显示保存项目的天数。我已尝试使用以下代码,但出现错误: 由于未捕获异常“NSInvalidArgumentException”而终止应用程序,原因:“无法分析格式字符串“savedTime” 例如,一种解决方案是告诉核心数据返回字典数组,而不是[NSManagedObject] func datesWithSavedData() -> [NSDate] { let fetchReques
例如,一种解决方案是告诉核心数据返回字典数组,而不是
[NSManagedObject]
func datesWithSavedData() -> [NSDate] {
let fetchRequest = NSFetchRequest(entityName: "UserData")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "savedTime", ascending: false)]
fetchRequest.resultType = .DictionaryResultType
fetchRequest.propertiesToFetch = ["savedTime"]
do {
let results = try managedObjectContext.executeFetchRequest(fetchRequest) as! [[String:NSDate]]
return results.map { $0["savedTime"] as! NSDate }
} catch let error as NSError {
print(error)
return [NSDate]()
}
}
Swift 3+
func datesWithSavedData() -> [Date] {
let fetchRequest : NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: "UserData")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "savedTime", ascending: false)]
fetchRequest.resultType = .dictionaryResultType
fetchRequest.propertiesToFetch = ["savedTime"]
do {
let results = try managedObjectContext.fetch(fetchRequest) as! [[String:Date]]
return results.map { $0["savedTime"] as! Date }
} catch {
print(error)
return [Date]()
}
}
func datesWithSavedData()->[Date]{
let fetchRequest:NSFetchRequest=NSFetchRequest(entityName:“UserData”)
fetchRequest.sortDescriptors=[NSSortDescriptor(键:“savedTime”,升序:false)]
fetchRequest.resultType=.dictionaryResultType
fetchRequest.propertiesToFetch=[“savedTime”]
做{
让results=try managedObjectContext.fetch(fetchRequest)作为![[String:Date]]
返回results.map{$0[“savedTime”]as!Date}
}抓住{
打印(错误)
返回[日期]()
}
}
例如,解决方案是告诉核心数据返回字典数组,而不是[NSManagedObject]
func datesWithSavedData() -> [NSDate] {
let fetchRequest = NSFetchRequest(entityName: "UserData")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "savedTime", ascending: false)]
fetchRequest.resultType = .DictionaryResultType
fetchRequest.propertiesToFetch = ["savedTime"]
do {
let results = try managedObjectContext.executeFetchRequest(fetchRequest) as! [[String:NSDate]]
return results.map { $0["savedTime"] as! NSDate }
} catch let error as NSError {
print(error)
return [NSDate]()
}
}
Swift 3+
func datesWithSavedData() -> [Date] {
let fetchRequest : NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: "UserData")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "savedTime", ascending: false)]
fetchRequest.resultType = .dictionaryResultType
fetchRequest.propertiesToFetch = ["savedTime"]
do {
let results = try managedObjectContext.fetch(fetchRequest) as! [[String:Date]]
return results.map { $0["savedTime"] as! Date }
} catch {
print(error)
return [Date]()
}
}
func datesWithSavedData()->[Date]{
let fetchRequest:NSFetchRequest=NSFetchRequest(entityName:“UserData”)
fetchRequest.sortDescriptors=[NSSortDescriptor(键:“savedTime”,升序:false)]
fetchRequest.resultType=.dictionaryResultType
fetchRequest.propertiesToFetch=[“savedTime”]
做{
让results=try managedObjectContext.fetch(fetchRequest)作为![[String:Date]]
返回results.map{$0[“savedTime”]as!Date}
}抓住{
打印(错误)
返回[日期]()
}
}
NSPredicate(格式:“savedTime”)
毫无意义。谓词用于过滤结果集,那么您希望实现什么呢?如果您想要所有条目,请省略谓词。我已经尝试过了,并且在selectedDates=results行上出现了错误“致命错误:在展开可选值时意外发现了nil!”!日期,我将它们保存为nsdate。executeFetchRequest
默认情况下始终返回[NSManagedObject]
。但是,您可以通过将请求的resultType
设置为。DictionaryResultType
并将propertiesToFetch
设置为所需属性的数组来获取简单字典的数组。然后,您可以使用map
函数或KVC获取您的NSDate
数组。这可能会有帮助:(现在为Swift 2更新)NSPredicate(格式:“savedTime”)
毫无意义。谓词用于过滤结果集,那么您希望实现什么呢?如果您想要所有条目,请省略谓词。我已经尝试过了,并且在selectedDates=results行上出现了错误“致命错误:在展开可选值时意外发现了nil!”!日期,我将它们保存为nsdate。executeFetchRequest
默认情况下始终返回[NSManagedObject]
。但是,您可以通过将请求的resultType
设置为。DictionaryResultType
并将propertiesToFetch
设置为所需属性的数组来获取简单字典的数组。然后,您可以使用map
函数或KVC获取您的NSDate
数组。这可能会有帮助:(现在已更新为Swift 2)这很有效,并提供了一个完美的nsdates字典!另一种解决方案是从核心数据中输出整个实体,而不仅仅是日期。这很有效,并且提供了一个完美的nsdates字典!另一种解决方案从核心数据中输出整个实体,而不仅仅是日期。