2014-07-10 24 views
8

benim app temsilci gayet güzel çalışıyorclassName.type adlı bir üye yok 'appDel'

let appDel: AppDelegate = (UIApplication.sharedApplication().delegate) as AppDelegate 

bir başvuru var, ama aşağıda kod satırı bir hata veriyor:

let context: NSManagedObjectContext = appDel.managedObjectContext 

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

Birazdan böyle Dersimde bunları aşağıda bildirilen:

bana şu hatayı veriyor

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

Tuhaf olan şey kodu viewDidLoad'a yapıştırdığımda veya bir işlevde kodun düzgün çalıştığı zamandır. Ve sorunun ne olduğunu anlayamıyorum. Bu hatayı nasıl çözebilirim?

DÜZENLEME:

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

yapmak 'bir bilgisayarlı' get' özelliğini appDel' - bu sayesinde çalışıyor daha mantıklı – kambala

cevap

0

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

Bu benim @Antonio sayesinde çalışma ne var, ama şimdi bağlamı erişmek mümkün değildir im ve appDel: Ben de burada bağlamı acces gerekir Hızlı bir şekilde tüm sınıf özellikleri başlatılıncaya kadar self referansı veremezsiniz. Sen örtülü bu satırda self kullanıyor:

let context: NSManagedObjectContext = appDel.managedObjectContext 

çözelti in başlatıcısı bunları başlatmak için, ama böyle bir şey kullanarak:

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

Ayrıca here okumak, benzer bir soru birkaç gün istedi önce SO.

+0

yapar ama I appDel ve Context erişim ihtiyacı güncellenen soruma bir göz atın. – Bas

+0

iyi, eğer sonuçlar bir başka sınıf özelliği ise, o zaman aynı şey geçerli olur. Başlatma sırasında örtülü olarak “self” kullanıyorsunuz. Sadece başka bir '' ctx = appDelegate.managedObjectContext' desteği değişkenini yaratın ve hem 'self.context' hem de self.results'ı başlatmak için kullanın. – Antonio

0
bağlamı başlatmasını biri yöntemidir

doldurmak için bunu söylemek, aşağı yerine

`

Ve görünümü denetleyicisi kadar AppDelegate

den
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    if let vc = window?.rootViewController as? UIViewController { 
     vc.context = self.managedObjectContext} 
inebilecek dinamik

var context: NSManagedObjectContext!

Ayrıca, belirtilen tüm nesneleri kullandığınız her yerde import CoreData'u da aramayı unutmayın. cts

Bir daha nihai yöntemi: Referans çalışma zamanında gerçekleşir böylece bir kapatma kullanın: var context: NSManagedObjectContext { let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate return appDelegate.managedObjectContext }

İlgili konular