格式 sectionNameKeyPath NSFetchedResultsController - Swift
Format sectionNameKeyPath NSFetchedResultsController - Swift
我正在尝试使用存储的 NSDate
属性为我的核心数据提取格式化我的 sectionNameKeyPath
。它完全正常工作,pulling/sorting 记录根据 NSDate
分成多个部分,但我不确定如何格式化它以按 dd-mm-yyyy 显示它。
我知道如何格式化 NSDate
使用:
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 子class。如果您还没有,并且您没有使用 mogenerator,那么您可以 do it the apple way.
在您的 VisitDetails class 中,添加:
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)
仅此而已!
我正在尝试使用存储的 NSDate
属性为我的核心数据提取格式化我的 sectionNameKeyPath
。它完全正常工作,pulling/sorting 记录根据 NSDate
分成多个部分,但我不确定如何格式化它以按 dd-mm-yyyy 显示它。
我知道如何格式化 NSDate
使用:
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 子class。如果您还没有,并且您没有使用 mogenerator,那么您可以 do it the apple way.
在您的 VisitDetails class 中,添加:
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)
仅此而已!