burada en iyi çözüm için bir paket gerekenler bağlıdır.
o kodu çalışır yazarken yüklenecek bilinen Belirli bir uygulama, çerçeve veya uzatma pakette sadece mevcut kaynakların bakmak mı? Bu durumda, belirli bir tür tanımlayan paketi dinamik olarak aramak yerine
init(identifier:)
'u kullanmak isteyebilirsiniz.
"Türünü takip eder" paket aramalarına dikkat edin. Örneğin, bir çerçeve sınıfı Foo
, bir kaynak yüklemek için NSBundle(forClass: self.dynamicType)
kullanıyorsa, uygulamanın yüklediği uygulama tarafından tanımlanan Foo
alt sınıfı, çerçeve paketi yerine uygulama paketine bakacaktır. Dinamik bir şey yok
struct Foo {
class Bar {}
static var fooBundle: NSBundle { return NSBundle(forClass: Foo.Bar.self) }
}
Not: Bir gerekmiyorsa
bir alt tipi olarak bir sınıf tanımlamak için bir yapı (veya enum) için paket araması, yararlı olacaktır tek çözüm olduğunu "türü aşağıdaki" Burada, hiçbir şey olması gerekmediğinden - her Foo
, aynı tür tanımdan gelir (yapılar yapılamamaktadır), dolayısıyla statik türü dinamik türüyle eşleşir.
(Kuşkusuz, yapılar, Çeteleler ele verebilir ve protokoller bir nice feature request yapabilir. Gerçi buna uzantıları ve her şeyi idare yapmak zor olabilir hayal bir NSBundle(forType:)
...)
Ayrıca bir cevap ararken Bu .. Şu anda bir yer tutucu sınıf tanımı ve bir NSBundle uzantısı var yardımcı olur, böylece uygun bir çözüm bulunana kadar çalışmaya devam edebilirim –