【问题标题】:Why do I get an error that my class doesn't have an NSManagedObject property when it clearly does?为什么我的类没有 NSManagedObject 属性时会出现错误?
【发布时间】:2014-10-04 20:20:47
【问题描述】:

我有一个UIViewController 子类MyViewController,它有一个NSFetchedResultsController 和一个NSManagedObjectContext。但是当我去创建NSFetchedResultsController 时,它说我在MyViewController 上没有 managedObjectContext 属性。

var managedObjectContext: NSManagedObjectContext!
var fetchedResultsController: NSFetchedResultsController = {
    let fetchRequest = NSFetchRequest()
    let entity = NSEntityDescription.entityForName("Post", inManagedObjectContext: self.managedObjectContext)
    fetchRequest.entity = entity
    fetchRequest.fetchBatchSize = 50
}()

我不是清楚地在它之前声明了一个 managedObjectContext 变量吗?我做错了什么?

【问题讨论】:

    标签: ios core-data swift nsfetchedresultscontroller nsmanagedobjectcontext


    【解决方案1】:

    一个属性的初始化器不能在同一个属性中引用另一个属性 类除非你将它声明为一个惰性计算属性。

    你也忘了从闭包中返回一个获取的结果控制器。

    var managedObjectContext: NSManagedObjectContext!
    lazy var fetchedResultsController: NSFetchedResultsController = {
        let fetchRequest = NSFetchRequest()
        let entity = NSEntityDescription.entityForName("Post", inManagedObjectContext: self.managedObjectContext)
        fetchRequest.entity = entity
        fetchRequest.fetchBatchSize = 50
        let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)
        return fetchedResultsController
        }()
    

    【讨论】:

    • 惰性变量差异在这里从根本上会产生什么影响?
    • @DougSmith:惰性变量在第一次访问时初始化,而不是在创建类实例时初始化。但这很好用,使用默认 Xcode 模板创建的 Core Data 应用程序使用相同的模式。
    猜你喜欢
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2021-12-23
    • 2022-10-16
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    相关资源
    最近更新 更多