2016-04-07 28 views
1

Bazı popüler açık kaynak hızlı projesinde. Ana paketten bir dosya yüklemek için kullanılan yaklaşımı takip ettim.Yükleme mainBundle

@objc class TestClass: NSObject { } 

let bundle = NSBundle(forClass: TestClass.self) 
let path = bundle.pathForResource(filename, ofType: "json") 

Bu yaklaşımı da kullanabiliriz.

let path = NSBundle.mainBundle().pathForResource(filename, ofType: "json") 

Neden birisi ikinci yaklaşım üzerinden ilk yaklaşımı seçer? bu olacak,

NSBundle.mainBundle() 

Eğer uygulama kodundan bu kodu çalıştırmak ise:

NSBundle(forClass: TestClass.self) 

Bu uygulamanın ana paket döndürür iken:

+1

Projenizde farklı paketleriniz varsa (kitaplık veya çerçeve gibi), ilk yaklaşımı kullanırsanız, doğru içeriği dış paketlerden açıkça yüklediğinizden emin olabilirsiniz. – holex

cevap

3

Bu TestClass sınıfını içeren paketi döndürür Ana paketinizi her zaman iade edin. Fakat eğer bu sınıf farklı bir kütüphane veya çerçevede yer alıyorsa, onu içeren paketi geri getirecektir. Örneğin, CocoaPod'lardaki tüm Swift kitaplıkları, dinamik çerçeveler kullanılarak tümleştirilir ve ana paketin içinde farklı bir pakette konuşlandırılır. Örneğin; Bu nedenle, tüm çerçeveler kendi kaynaklarına erişmek için gömülü paketi kullanmalıdır.

Kod taşınabilirliğini geliştirmek için ilk yaklaşımı (NSBundle(forClass:) yöntemi) kullanmanızı öneririm. Dinamik çerçeveler oluştururken gereklidir.

İlgili konular