2015-01-28 21 views
5

Bu yüzden, ana uygulamamdan yapılmış bir Today View widget'ım var ve bazı depolanmış verilere (CoreData üzerinden) erişmeye çalışıyorum. Ama benim varlıklardan birini ele almak için tembel değişken oluştururken, derleme başarısız olur. Onun attığı hatayı anlıyorum, ama nasıl halledeceğime/tamir edeceğime emin değilim.AppDelegate'i bir Bugün Görünüm Widget'ından nasıl başvuruyorsunuz?

lazy var managedObjectContext : NSManagedObjectContext? = { 
    let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate 
    if let managedObjectContext = appDelegate.managedObjectContext { 
     return managedObjectContext 
    } 
    else { 
     return nil 
    } 
    }() 

hatası en 2. hatta atılmış olur ... "AppDelegate olarak" bir olduğunu "AppDelegate ait bildirilmemiş kullanılması." AppDelegate, widget'ın klasöründe değil, temel uygulama klasöründe olduğu için mantıklı geliyor. Ancak, kodun nasıl derleneceğini ve çalışacağını, nasıl değiştireceğimi veya onaracağımı kaybediyorum. Herhangi bir fikir?

cevap

2

Yapamazsınız. Uzantılar, uygulama temsilcinizin bulunduğu ana uygulama paketindeki tamamıyla ayrılmış ikili dosyalardır. Ana uygulama paketiniz ve uzantınız tarafından kullanılacak bir paylaşılan kitaplık oluşturmanız veya çok sayıda kopyala yapıştırıcı kodu yapmanız gerekir. (eski yöntem tercih edilir). developer guides itibaren

:

için bunları uygulama uzantısı ve onun içeren uygulamaya arasındaki kod paylaşmak için gömülü bir çerçeve oluşturabilir. Örneğin, Fotoğraf Düzenleme uzantınızda ve uygulama içeren uygulamasında kullanmak üzere bir görüntü filtresi geliştirirseniz, filtrenin kodunu bir çerçeveye yerleştirin ve her iki hedefe de çerçevesini ekleyin.

İstemiyorsanız, resmi bir bağlantı kitaplığı oluşturmanız gerekmez. Yazdığınız kütüphanenin, uzantılar için mevcut olmayan API'lere başvurmadığından emin olun.

Some APIs Are Unavailable to App Extensions açıklandığı şekilde gömülü çerçeve, uygulama uzantıları kullanılamaz API'leri içermediğinden emin olun. Bu API'ları içeren özel bir çerçeveniz varsa, 'u uygulamanızdan güvenli bir şekilde bağlantılandırabilirsiniz, ancak bu kodu uygulamasının içerdiği uzantılarla paylaşamazsınız. App Store, bu tür çerçevelere bağlanan ya da kullanılamamış API'ları kullanan herhangi bir uygulama uzantısını reddeder.

İlgili konular