我儘量做到以下幾點:NSPredicate上NSManagedObject的集合不能要求
predicate = NSPredicate(format: "user.userID = %@ AND messages[SIZE] > 0", IOSUser.sharedInstance().userID)
let managedObjectCtx = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
let entity = NSEntityDescription.entityForName("Session", inManagedObjectContext: managedObjectCtx)
fetchRequest.entity = entity
fetchRequest.predicate = predicate
let dateSortDescriptor = NSSortDescriptor(key: "messages[LAST].date", ascending: false)
let sortDescriptors = [dateSortDescriptor]
fetchRequest.sortDescriptors = sortDescriptors
sessionFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedObjectCtx, sectionNameKeyPath: nil, cacheName: nil)
sessionFetchedResultsController.delegate = self
do{
try sessionFetchedResultsController.performFetch()
}catch{
abort()
}
但它崩潰的performFetch()。
基本上我嘗試獲取應用程序用戶擁有的所有聊天會話,並嘗試確保所有會話都至少有1條消息。 另外,我想按最近的消息對所有會話進行排序。
這裏是崩潰:
我嘗試添加fetchRequest.includesSubentities =真 但它仍然無法 – Mikael
我也試圖與關鍵字「Any」而任何消息[SIZE]> 0" – Mikael
你確定謂語的問題 - 我懷疑它可能是排序描述符,沒有謂詞測試,然後沒有排序描述符,並查看是哪個原因導致問題(或可能兩個!)。 – pbasdf