我跟着这个建议: Format sectionNameKeyPath NSFetchedResultsController - SwiftsectionNameKeyPath NSFetchedResultsController被忽略 - 斯威夫特
我有一个有点问题,与此实现。 使用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中输入“date”时,我得到与上面提到的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不是在实体):
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
使用 “sectionIdentifier” 为'sectionNameKeyPath' –
对不起,我没有提到它,但我做到了。这是不行的。 – sidetrax
究竟发生了什么? fetchedResultsController是否返回分段结果?你如何设置视图的标题? –