0

我有一個UIViewController子類,MyViewController,它有一個NSFetchedResultsControllerNSManagedObjectContext。但是當我去創建NSFetchedResultsController它說我沒有MyViewController上的managedObjectContext屬性。爲什麼我得到一個錯誤,我的類沒有明確的NSManagedObject屬性?

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

一個屬性的初始值設定除非聲明它作爲一個計算財產不能引用在同一 類的其它屬性。

你也忘了從閉包中返回一個提取的結果控制器。

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

懶惰變量差異會從根本上做什麼? – 2014-10-04 20:30:22

+0

@DougSmith:一個懶惰變量在其第一次訪問時初始化,而不是在創建類實例時初始化。但是,這效果很好,使用默認Xcode模板創建的Core Data應用程序使用相同的模式。 – 2014-10-04 20:47:04

相關問題