如何过滤核心数据获取请求结果

时间:2018-02-01 19:51:21

标签: swift core-data

如何从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

1 个答案:

答案 0 :(得分:2)

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

要从日期字符串中提取日期,请使用String

DateFormatter

然后,当您创建let dateFormatter = DateFormatter() dateFormatter.dateFormat = "dd.MM.yyyy" let date = dateFormatter.date(from: dateString) 对象时,您需要存储实际的ApiCalls而不是Date

如果您想要最新的一个,您可能不想过滤它,但会在日期键上对结果进行排序。您需要在String添加NSSortDescriptor

fetchRequest