ios - Swift 从 ManagedObjectContext FetchRequest 获取日期数组

标签 ios arrays swift core-data nspredicate

我正在尝试为核心数据中的日期属性创建一个 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]
}

最佳答案

一个解决方案是告诉 Core Data 返回一个字典数组而不是 [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]()
    }
}

关于ios - Swift 从 ManagedObjectContext FetchRequest 获取日期数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37144207/

相关文章:

ios - SWRevealViewController 不与 swift 3 切换

ios - 如何在webobjects中获取带有sessionId的现有 session ?

python - 替换数组中的负数,Python

arrays - C# : UDP Socket - Receive data with unknown size

arrays - 具有排序和 Foreach 数据绑定(bind)的 knockout 可观察数组

swift - 如何检查核心数据是否为空

ios - 如何调试 wait_fences 错误

ios - Xcode上的iPhone SDK部署目标

ios - 由于自动布局没有计算尺寸,将 subview 添加到自定义 View 最终是错误的

swift - 如何获取 Eureka 自定义单元格的 indexpath.row ,按钮标签