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 中,NSFetchedResultsControllerNSFetchRequest 需要类型参数。假设 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 显示错误的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate LAZY fetch [重复]

javascript 使用Fetch实现Lazy

Fetch.lazy 不适用于 spring boot jpa,一定是啥问题?

Hibernate 5.2.9:@Basic(fetch = FetchType.LAZY) 不工作

Hibernate中fetch和lazy介绍

Hibernate中fetch和lazy介绍