【发布时间】:2017-06-12 21:48:46
【问题描述】:
我遵循了这个建议: Format sectionNameKeyPath NSFetchedResultsController - Swift
我对这个实现有点问题。 使用 Xcode 8 和 iOS 10。
我将 Codegen 设置为 Manual/None 并添加了我的 NSManagedObject 子类。
然后我按照你的建议添加了:
var sectionIdentifier: String
{
get
{
let dateFormatter = DateFormatter()
// dateFormatter.dateStyle = .short
// dateFormatter.timeStyle = .none
// ..or to stick to your original question:
dateFormatter.dateFormat = "yyyy-MMM-dd"
return dateFormatter.string(from: date! as Date)
}
}
但无论出于何种原因,它都会被 sectionNameKeyPath 忽略。当我在 sectionNameKeyPath 中输入“日期”时,我得到与上面提到的 AllReadyHome 相同的结果。
我什至尝试过:
return (date?.description)!
它没有产生任何结果。
也许有人可以指出我正确的方向......
更新 1: 这就是我的 fetchedResultsController 的样子:
let fetchRequest: NSFetchRequest<Time> = Time.fetchRequest()
fetchRequest.fetchBatchSize = 20
let sortDescriptor = NSSortDescriptor(key: "date", ascending: false)
fetchRequest.sortDescriptors = [sortDescriptor]
let aFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext!, sectionNameKeyPath: "sectionIdentifier", cacheName: "Time")
使用日期时,这是我实体的一个属性:
let aFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext!, sectionNameKeyPath: "date", cacheName: "Time")
更新 2: 按照建议使用 sortDescriptor 时,我遇到了崩溃(“sectionIdentifier not in entity):
let fetchRequest: NSFetchRequest<Time> = Time.fetchRequest()
fetchRequest.fetchBatchSize = 20
let sortDescriptor1 = NSSortDescriptor(key: "sectionIdentifier", ascending: false)
let sortDescriptor2 = NSSortDescriptor(key: "date", ascending: false)
fetchRequest.sortDescriptors = [sortDescriptor1, sortDescriptor2]
let aFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext!, sectionNameKeyPath: "sectionIdentifier", cacheName: "Time")
更新 3: 进入屏幕时,我收到以下警告:
A section returned nil value for section name key path 'sectionIdentifier'. Objects will be placed in unnamed section
CoreData: error: (NSFetchedResultsController). A section returned nil value for section name key path 'sectionIdentifier'. Objects will be placed in unnamed section
【问题讨论】:
-
对
sectionNameKeyPath使用“sectionIdentifier” -
对不起,我没有提,但我提了。那是行不通的。
-
到底发生了什么? fetchedResultsController 是否返回分段结果?您如何设置视图的标题?
-
您的
NSFetchedResultsController看起来如何?为了能够使用sectionNameKeyPath,您需要与第一个排序描述符相同的属性 -
感谢您的帮助! ;-) 请查看上面的更新
标签: ios core-data nsfetchedresultscontroller