swift - 如何过滤Core Data获取请求结果

标签 swift core-data

如何从核心数据获取请求输出中提取最后一个 apiCallsToday 值?

var result: [NSManagedObject]?

guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }

let managedContext = appDelegate.persistentContainer.viewContext

let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "ApiCalls")
fetchRequest.returnsObjectsAsFaults = false

    do {
        result = try managedContext.fetch(fetchRequest)
        print(result!)
    } catch let error as NSError {
        print("Could not fetch. \(error), \(error.userInfo)")
    }

控制台输出:

enter image description here

最佳答案

我不确定您的核心数据对象模型是什么样的,但正如 Sandeep 指出的那样,您将日期存储为字符串。纠正此问题的一种可能性是更新您的模型,以便您的 ApiCalls 具有存储 Datedate 属性,而不是 >dateString 属性,存储String

要从日期字符串中提取日期,您可以使用DateFormatter:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd.MM.yyyy"
let date = dateFormatter.date(from: dateString)

然后,当您创建 ApiCalls 对象时,您将存储实际的 Date 而不是 String

如果您想要最新的结果,您可能不想过滤它,而是根据日期键对结果进行排序。您需要将 NSSortDescriptor 添加到 fetchRequest 中。

guard let appDelegate =
  UIApplication.shared.delegate as? AppDelegate else {
    return
}

var results: [ApiCalls] = []

let managedContext =
  appDelegate.persistentContainer.viewContext

let fetchRequest =
  NSFetchRequest<NSManagedObject>(entityName: "ApiCalls")
let sortDescriptor = NSSortDescriptor(key: #keyPath(ApiCalls.date), ascending: false)
fetchRequest.sortDescriptors = [sortDescriptor]
fetchRequest.fetchLimit = 1

do {
  results = try managedContext.fetch(fetchRequest)
} catch let error as NSError {
  print("Could not fetch. \(error), \(error.userInfo)")
}

let mostRecentDate = results.first

关于swift - 如何过滤Core Data获取请求结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48570669/

相关文章:

swift - CustomNSError 协议(protocol)有什么作用,我为什么要采用它?

ios - SceneKit 相机在不应该显示的时候显示额外的空间

core-data - numberOfRowsInSection : method for core data and multiple sections

ios - 核心数据 : Trouble getting the managedObjectContext and model

swift - Apple Watch 上的 CoreMotion OperationQueue 问题

ios - 在 Swift 3 中使用 SnapKit 以编程方式修改约束以删除一个 UIView

ios - Apple Vision框架–从图像中提取文本

ios - 核心数据-轻量级迁移和多个核心数据模型

xcode - XCode 5 中的 Core Data - 手动安装以及如何安装?

swift - UIPickerView 和 CoreData 数组