Sorting NSManagedObject array
我的项目中有一个应该可以运行的代码。简而言之,我想按创建日期对请求的获取结果进行排序,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 0 context =... 1 let fetchRequest = NSFetchRequest(entityName: CoreDataValues.EntityName) 2 do { 3 let results = try context?.executeFetchRequest(fetchRequest) 4 let sortDescriptor = NSSortDescriptor(key: CoreDataValues.CreationDateKey, ascending: true) 5 if let sortedObjects = (results as? NSArray)?.sortedArrayUsingDescriptors([sortDescriptor]) as? [NSManagedObject] { 6 searchTextObjects = sortedObjects 7 tableView.reloadData() 8 } 9 } catch let error as NSError { 10 print("Could not fetch \\(error), \\(error.userInfo)") 11 } |
但是在第5行,我得到了警告:"从[AnyObject]投射到不相关的NSArray类型始终失败"。
您的代码有点复杂。
推荐的方法是将排序描述符与获取请求一起传递
1 2 3 4 5 6 7 8 9 10 11 | context =... let fetchRequest = NSFetchRequest(entityName: CoreDataValues.EntityName) let sortDescriptor = NSSortDescriptor(key: CoreDataValues.CreationDateKey, ascending: true) fetchRequest.sortDescriptors = [sortDescriptor] do { searchTextObjects = try context?.executeFetchRequest(fetchRequest) tableView.reloadData() } catch let error as NSError { print("Could not fetch \\(error), \\(error.userInfo)") } |
关于您的错误:
1 | let results = try context.executeFetchRequest(fetchRequest) as! [NSManagedObject] |
我还建议将