2017-01-30 63 views
0

我正在研究Udacity上的CoreData项目,并且难以实现fetchedResultsController。我试图实例fetchedResultsController带有水上变种,但它提示我“实例成员背景不能在类型‘的ViewController’使用我的代码是这样的:Swift fetchResultsController:实例成员不能用于'ViewController'类型

//AppDelegate 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 
    let stack = CoreDataStack(modelName: "Model") 
    ... 
} 

//ViewController 
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, MKMapViewDelegate{ 

    lazy var context: NSManagedObjectContext = { 
     let appDelegate = UIApplication.shared.delegate as! AppDelegate 
     return appDelegate.stack!.context 
    }() 

    lazy var fetchedResultsController: NSFetchedResultsController<NSFetchRequestResult> = { 
     let fetchedRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Photo") 
     fetchedRequest.sortDescriptors = [] 

     return NSFetchedResultsController(fetchRequest: fetchedRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil) 
    }() 

这样做会给我一个错误线在“上下文“在fetchedResultsController表示:

实例成员‘?!方面的ViewController‘

有什么我做错了任何意见是非常赞赏’不能在使用类型’,感谢

回答

2

你需要明确使用self在慵懒的属性指的是context时:

return NSFetchedResultsController(fetchRequest: fetchedRequest, managedObjectContext: self.context, sectionNameKeyPath: nil, cacheName: nil) 
+0

天哪,你解决了我的2避免受挫,与看起来那么微不足道的东西。谢谢! – Koh

相关问题