我有我的应用代表的参考
let appDel: AppDelegate = (UIApplication.sharedApplication().delegate) as AppDelegate
Run Code Online (Sandbox Code Playgroud)
这工作正常,但下面这行代码给出了一个错误:
let context: NSManagedObjectContext = appDel.managedObjectContext
Run Code Online (Sandbox Code Playgroud)
它给了我以下错误:
'vctGebruikers.Type' does not have a member named 'appDel'
Run Code Online (Sandbox Code Playgroud)
我在他们的课堂下面宣布他们是这样的:
class vctGebruikers: UIViewController, UITableViewDelegate, UITableViewDataSource {
let appDel: AppDelegate = (UIApplication.sharedApplication().delegate) as AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是当我将代码粘贴到viewDidLoad函数中或函数中时,代码才能正常工作.我无法弄清问题是什么.我该如何解决这个错误?
编辑:我还需要访问上下文:
let results: NSArray = context.executeFetchRequest(request, error: nil)
Run Code Online (Sandbox Code Playgroud)
感谢@Antonio,这就是我的工作,但现在我无法访问上下文和appDel
init(coder aDecoder: NSCoder!) {
let appDelegate = (UIApplication.sharedApplication().delegate) as AppDelegate
self.appDel = appDelegate
self.context = appDelegate.managedObjectContext
super.init(coder: aDecoder)
}
Run Code Online (Sandbox Code Playgroud)
self在 swift 中,直到所有类属性都已初始化后才能引用。self您在这一行中隐式使用:
let context: NSManagedObjectContext = appDel.managedObjectContext
Run Code Online (Sandbox Code Playgroud)
解决方案是在初始化程序中初始化它们,但使用类似:
let appDelegate = (UIApplication.sharedApplication().delegate) as AppDelegate
self.appDel = appDelegate
self.context = appDelegate.managedObjectContext
Run Code Online (Sandbox Code Playgroud)
另请阅读此处,几天前在 SO 上提出了类似的问题。
| 归档时间: |
|
| 查看次数: |
1126 次 |
| 最近记录: |