gpt4 book ai didi

swift - 核心数据 - 如何从实体属性中获取最大值(Swift)

转载 作者:搜寻专家 更新时间:2023-10-30 22:05:52 25 4
gpt4 key购买 nike


食谱

  • 配方ID:整数
  • 食谱名称:字符串

我有一个带有属性 recipeID 的实体 Recipe。如何在 Swift 中将 max(recipeID) 作为 Int 值获取?

我是 swift 的新手,请帮助我。提前致谢。

func fetchMaxID() {
let context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "Recipe")

fetchRequest.fetchLimit = 1
let sortDescriptor = NSSortDescriptor(key: "recipeID", ascending: false)
fetchRequest.sortDescriptors = [sortDescriptor]
do {
let maxID = try [managedObjectContext?.executeFetchRequest(fetchRequest)].first
print(maxID)
} catch _ {

}
}

最佳答案

Apple 推荐并且最快的方式是使用 NSExpressions。 moc 是一个 NSManagedObjectContext

private func getLastContactSyncTimestamp() -> Int64? {

let request: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest()
request.entity = NSEntityDescription.entity(forEntityName: "Contact", in: self.moc)
request.resultType = NSFetchRequestResultType.dictionaryResultType

let keypathExpression = NSExpression(forKeyPath: "timestamp")
let maxExpression = NSExpression(forFunction: "max:", arguments: [keypathExpression])

let key = "maxTimestamp"

let expressionDescription = NSExpressionDescription()
expressionDescription.name = key
expressionDescription.expression = maxExpression
expressionDescription.expressionResultType = .integer64AttributeType

request.propertiesToFetch = [expressionDescription]

var maxTimestamp: Int64? = nil

do {

if let result = try self.moc.fetch(request) as? [[String: Int64]], let dict = result.first {
maxTimestamp = dict[key]
}

} catch {
assertionFailure("Failed to fetch max timestamp with error = \(error)")
return nil
}

return maxTimestamp
}

关于swift - 核心数据 - 如何从实体属性中获取最大值(Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39102900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com