Ios Swift3:lazy var fetchrequestcontroller 显示错误
Posted
技术标签:
【中文标题】Ios Swift3:lazy var fetchrequestcontroller 显示错误【英文标题】:Ios Swift3 : lazy var fetchrequestcontroller showing an error 【发布时间】:2016-10-25 11:29:50 【问题描述】:我在表视图控制器中使用惰性 var 从 CoreData 获取数据。它在 swift2 中运行良好。但是当我升级到 Swift3 时,它显示如下错误。请帮助我为 Swift3 进行更改
错误:无法将“错误”类型的值转换为指定类型“NSFetchedResultsController”
lazy var fetchedResultsController: NSfetchedResultsController =
let fetchRequest = NSFetchRequest(entityName: "EvtIvtTbl")
let sortDescriptor = NSSortDescriptor(key: "bym_kol", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
let fetchedResultsController = NSfetchedResultsController(fetchRequest: fetchRequest,
managedObjectContext: self.managedObjectContext,
sectionNameKeyPath: nil,
cacheName: nil)
fetchedResultsController.delegate = self
return fetchedResultsController
()
【问题讨论】:
你试过了吗? ***.com/questions/39816877/… 所有变量都应该在camelCase
中。为了可读性,您也应该为局部变量提供更通用的名称。我把它清理了一下,这样你就可以看到我在说什么了。
【参考方案1】:
在 Swift 3.0 中,NSFetchedResultsController
和 NSFetchRequest
需要类型参数。假设 EvtIvtTbl
是您的 NSManagedObject
子类,您的代码应如下所示:
lazy var fetchedResultsController: NSFetchedResultsController<EvtIvtTbl> =
let fetchRequest = NSFetchRequest<EvtIvtTbl>(entityName: "EvtIvtTbl")
let sortDescriptor = NSSortDescriptor(key: "bym_kol", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
let fetchedResultsController = NSFetchedResultsController<EvtIvtTbl>(fetchRequest: fetchRequest,
managedObjectContext: self.managedObjectContext,
sectionNameKeyPath: nil,
cacheName: nil)
fetchedResultsController.delegate = self
return fetchedResultsController
()
【讨论】:
以上是关于Ios Swift3:lazy var fetchrequestcontroller 显示错误的主要内容,如果未能解决你的问题,请参考以下文章
Fetch.lazy 不适用于 spring boot jpa,一定是啥问题?