为啥我的类没有 NSManagedObject 属性时会出现错误?
Posted
技术标签:
【中文标题】为啥我的类没有 NSManagedObject 属性时会出现错误?【英文标题】: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 变量吗?我做错了什么?
【问题讨论】:
【参考方案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 应用程序使用相同的模式。以上是关于为啥我的类没有 NSManagedObject 属性时会出现错误?的主要内容,如果未能解决你的问题,请参考以下文章
为啥自动创建的 NSManagedObject 子类没有“正确”标题?
创建 NSManagedObject 子类,创建名为我的项目的类