ios – className.type没有名为’appDel’的成员

我有一个我的应用代表的参考
let appDel: AppDelegate = (UIApplication.sharedApplication().delegate) as AppDelegate

这工作正常,但下面这行代码给出了一个错误

let context: NSManagedobjectContext = appDel.managedobjectContext

它给我以下错误

'vctGebruikers.Type' does not have a member named 'appDel'

我在他的课堂下面宣布他们是这样的:

class vctGebruikers: UIViewController,UITableViewDelegate,UITableViewDataSource {
  let appDel: AppDelegate = (UIApplication.sharedApplication().delegate) as AppDelegate
  let context: NSManagedobjectContext = appDel.managedobjectContext 
}

奇怪的是,当我将代码粘贴到viewDidLoad或函数中时,代码才能正常工作.我无法弄清问题是什么.
我该如何解决这个错误

编辑:
我还需要在这里访问上下文:

let results: NSArray = context.executeFetchRequest(request,error: nil)

这是我在@Antonio工作的原因,但现在我无法访问上下文和appDel

init(coder aDecoder: NSCoder!) {
  let appDelegate = (UIApplication.sharedApplication().delegate) as AppDelegate
  self.appDel = appDelegate
  self.context = appDelegate.managedobjectContext
  super.init(coder: aDecoder)
}

解决方法

在swift中,在初始化所有类属性之前,您无法引用self.
您在此行中隐式使用self:
let context: NSManagedobjectContext = appDel.managedobjectContext

解决方案是在初始化程序中初始化它们,但使用类似于:

let appDelegate = (UIApplication.sharedApplication().delegate) as AppDelegate
self.appDel = appDelegate
self.context = appDelegate.managedobjectContext

另外阅读here,几天前在SO上提出了类似的问题.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...