And*_* M. 2 arrays core-data ios swift
我的项目中有一个应该有效的代码.简单地说,我想按创建日期对请求的获取结果进行排序,如下所示:
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 }
Run Code Online (Sandbox Code Playgroud)
但在5行我发出警告:"从[AnyObject]转换为无关类型的NSArray总是失败".
你的代码有点复杂.
建议的方法是将排序描述符与获取请求一起传递
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)")
}
Run Code Online (Sandbox Code Playgroud)
关于你的错误:
executeFetchRequest返回,[AnyObject]以便您可以尽快将类型转换为正确的类型.
let results = try context.executeFetchRequest(fetchRequest) as! [NSManagedObject]
Run Code Online (Sandbox Code Playgroud)
我建议也做context非可选(如在最新的Core Data模板中)
| 归档时间: |
|
| 查看次数: |
828 次 |
| 最近记录: |