gpt4 book ai didi

ios - 格式 sectionNameKeyPath NSFetchedResultsController - Swift

转载 作者:可可西里 更新时间:2023-11-01 00:52:50 25 4
gpt4 key购买 nike

我正在尝试使用存储的 NSDate 属性为我的核心数据提取格式化我的 sectionNameKeyPath。它完全正常工作,并根据 NSDate 将记录拉/分类到多个部分,但我不确定如何格式化它以按 dd-mm-yyyy 显示它。

我知道如何格式化 NSDate 使用:

let date = NSDate(timeIntervalSince1970:myTimeInterval)
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"

我当前的获取请求使用核心数据属性 sectionDate 作为 sectionNameKeyPath 的部分划分

获取

let fetchRequest = NSFetchRequest(entityName: "VisitDetails")
let primarySortDescriptor = NSSortDescriptor(key: "dateDue", ascending: false)
let sortDescriptors = [primarySortDescriptor]
fetchRequest.sortDescriptors = sortDescriptors

let frc = NSFetchedResultsController(
fetchRequest: fetchRequest,
managedObjectContext: self.managedObjectContext!,
sectionNameKeyPath: "dateSections",
cacheName: nil)

frc.delegate = self

所以澄清一下,我想格式化输出并仅按 dd-MM-yyy 排序。目前,它看起来像:

enter image description here

我认为 Hack 正在创建一个额外的属性并输入一个格式化的字符串,然后使用它来分割结果?

最佳答案

我刚刚为我正在从事的项目做了这个。这是我所做的:

可选但强烈推荐的是设置 mogenerator。有一个很好的教程here用于设置您的核心数据项目以使用它。

无论如何,在你的数据模型中,确保你有一个与实体相关联的 NSManagedObject 子类。如果您还没有,并且您没有使用 mogenerator,那么您可以 do it the apple way .

在您的 VisitDetails 类中,添加:

var formattedDateDue: String {
get {
let dateFormatter = NSDateFormatter()
// Apple suggested locale-aware technique:
// dateFormatter.dateStyle = .ShortStyle
// dateFormatter.timeStyle = .NoStyle
// ..or to stick to your original question:
dateFormatter.dateFormat = "dd-MM-yyyy"
return dateFormatter.stringFromDate(self.dateDue)
}
}

(假设您希望您的部分在 dateDue 的日期分组,否则为您的 dateSections 属性创建计算属性。)然后您从上面修改您的获取结果 Controller 以使用计算属性:

let frc = NSFetchedResultsController(
fetchRequest: fetchRequest,
managedObjectContext: self.managedObjectContext!,
sectionNameKeyPath: "formattedDateDue",
cacheName: nil)

仅此而已!

关于ios - 格式 sectionNameKeyPath NSFetchedResultsController - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31317346/

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