我正在尝试格式化我的sectionNameKeyPath
对于我的核心数据获取,使用存储的NSDate
属性。它正在全面工作,并根据以下内容将记录拉动/排序到各个部分NSDate
但我不知道如何格式化它以按 dd-mm-yyyy 显示它。
我知道如何格式化NSDate
using:
let date = NSDate(timeIntervalSince1970:myTimeInterval)
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
我当前使用核心数据属性的获取请求sectionDate
作为部分划分sectionNameKeyPath
FETCH
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 排序。目前,它看起来像:
我假设一个Hack正在创建附加属性并输入格式化字符串,然后使用它来划分结果?
我刚刚为我正在开发的一个项目做了这个。这就是我所做的:
可选但强烈推荐的是设置 mogenerator。有一个很好的教程here用于设置您的核心数据项目以使用它。
无论如何,在您的数据模型中,请确保您有一个与实体关联的 NSManagedObject 子类。如果您还没有,并且您没有使用 mogenerator,那么您可以按照苹果的方式做.
在您的 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 属性创建计算属性。)然后,您可以从上面修改您的获取结果控制器以使用计算属性:
let frc = NSFetchedResultsController(
fetchRequest: fetchRequest,
managedObjectContext: self.managedObjectContext!,
sectionNameKeyPath: "formattedDateDue",
cacheName: nil)
这就是全部!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)