为什么我得到一个错误,我的类显然没有NSManagedObject属性?

时间:2014-10-04 20:20:48

标签: ios core-data swift nsfetchedresultscontroller nsmanagedobjectcontext

我有一个UIViewController子类MyViewController,其中包含NSFetchedResultsControllerNSManagedObjectContext。但是,当我去创建NSFetchedResultsController时,它表示MyViewController上没有托管对象属性。

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

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

1 个答案:

答案 0 :(得分:1)

属性的初始化程序无法引用同一属性 class 除非将其声明为 lazy 计算属性。

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

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
    }()