我跟着這個建議: 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是否返回分段結果?你如何設置視圖的標題? –