gpt4 book ai didi

ios - 我不知道如何使用 NSPredicate 在 Core Data 上编写我的查询语句

转载 作者:行者123 更新时间:2023-11-28 06:45:36 26 4
gpt4 key购买 nike

我是 Core Data 的新手,我不知道如何为 NSPredicate 编写一些查询语句并遇到一些问题。请帮助找到我的问题并给我一些建议以实现我的查询目标。例如,现在我有一个表,它有一些数据。(如图所示)My database

表中月份属性为“2015/03/01 00:00:00”的数据。现在,我想查询从2015/03开始的月份,我编码“fetchRequest.predicate = NSPredicate (格式: "month BEGINSWITH[cd] %@/0%@", year,month)"或者 "fetchRequest.predicate = NSPredicate(format: "month LIKE[c] %@/0%@", year,month) “,我说得对吗?(年=2015年,月=03)如果没有,我真的希望有人能帮助我。还有一个问题是[]中的'cd/c'是什么意思?它是集合结构吗?代码如下:

    func remove(model:MonthlySummery) -> Int {
let cxt = self.managedObjectContext!
let entity = NSEntityDescription.entityForName("MonthlySummery", inManagedObjectContext: cxt)
let component = NSCalendar.currentCalendar().components([.Year,.Month], fromDate: model.month!)
let year = component.year
let month = component.month
let fetchRequest = NSFetchRequest()
fetchRequest.entity = entity
NSLog("month == %i/0%i", year,month)
fetchRequest.predicate = NSPredicate(format: "month BEGINSWITH[cd] %@/0%@", year,month)
do{
let listData = try cxt.executeFetchRequest(fetchRequest) as NSArray!
if listData.count > 0 {
let dailyRecord = listData.lastObject as! NSManagedObject
cxt.deleteObject(dailyRecord)
if cxt.hasChanges {
try cxt.save()
}
}
} catch {
NSLog("Remove failure!")
let nserror = error as NSError
NSLog("Error: \(nserror), \(nserror.userInfo)")
}
return 0
}

最佳答案

依靠格式化的日期字符串来解析日期是个坏主意。

重构您的代码以使用正确的日期。 NSManagedObject 子类应该有一个 NSDate 类型的属性。在实际的 SQLite 数据库中,这将由一个长数字表示,但您不应该对此感兴趣。

然后您计算特定月份的开始和结束日期并使用如下谓词:

NSPredicate(format: "month >= %@ && month < %@", start, end)

关于ios - 我不知道如何使用 NSPredicate 在 Core Data 上编写我的查询语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36526067/

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