All*_*ome 3 nsfetchedresultscontroller swift3
我刚刚将我的项目迁移到Swift 3,并且因为我的惰性实例化NSFetchResultController而陷入错误.我在这里使用这个方法:
我目前的代码
lazy var fetchedResultsController: NSFetchedResultsController = {
let primarySortDescriptor = NSSortDescriptor(key: "company", ascending: true)
let sortDescriptors = [primarySortDescriptor]
self.fetchRequest.sortDescriptors = sortDescriptors
let frc = NSFetchedResultsController(
fetchRequest: self.fetchRequest,
managedObjectContext: self.managedObjectContext!,
sectionNameKeyPath: nil,
cacheName: nil)
frc.delegate = self
return frc
}()
Run Code Online (Sandbox Code Playgroud)
它产生2个错误,如下所示
在Swift 3下这种方法不再可行吗?我() -> <<error type>> in按照Xcode的建议尝试添加,但未能产生正确的结果.
vad*_*ian 10
建议() -> <<error type>>具有误导性.
在Swift 3中NSFetchedResultsController已成为通用类型.你必须初始化它:
lazy var fetchedResultsController: NSFetchedResultsController<NSFetchRequestResult> = {
...
}()
Run Code Online (Sandbox Code Playgroud)
以及 NSFetchRequest
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "MyEntity")
Run Code Online (Sandbox Code Playgroud)
如果您正在使用NSManagedObject- 推荐的子类 - 您可以使用子类类型来更具体
lazy var fetchedResultsController: NSFetchedResultsController<MyEntity> = {
....
let fetchRequest = NSFetchRequest<MyEntity>(entityName: "MyEntity")
Run Code Online (Sandbox Code Playgroud)
巨大的好处就是你得到蒙上使用摆脱所有类型的fetch,insert等等.
| 归档时间: |
|
| 查看次数: |
1819 次 |
| 最近记录: |