Пакет Cocoapod недоступен в моем приложении

Я создаю свой собственный модуль с некоторыми файлами ресурсов. В основном это определяется так:

Pod::Spec.new do |s|
s.name         = 'MyName'
s.version      = '0.0.1'
s.license      =  { :type => 'MIT' }
s.homepage     = 'not important'
s.authors      = {
    # authors
}
s.summary      = '…'

# Source Info
s.source       =  {
    # .. my sources
}
s.source_files = ['Sources/*.swift']

s.resource_bundle = {'MyNameBundle' => ['*.{storyboard,xib,png,jsbundle,meta}']}

s.ios.deployment_target = '9.0'

s.requires_arc = true

конец

Модуль установлен с pod install, и я вижу, что файлы ресурсов доступны в MyName/Resources/. Все идет нормально.

Я даже вижу в моем Pods.pbxcodeproj, что есть 2 новые цели: MyName и MyNameBundle-Bundle.

Но дело в том, что когда я пытаюсь перечислить все доступные пакеты:

        NSBundle.allBundles().forEach { 
           print("bundle identifier: \($0.bundleIdentifier) - path \($0.bundlePath)") 
        }

Потом не появляется.

Что мне не хватает?


person aimak    schedule 02.01.2017    source источник


Ответы (1)


Ну, вот ответ, но я не могу объяснить, как это работает. Если у кого-то есть идеи, пожалуйста, дайте мне знать.

Этот пост мне очень помог https://stackoverflow.com/a/35903720/1427775

Поэтому в моем поде мне пришлось добавить пустой класс swift, чтобы его можно было использовать для загрузки правильного NSBundle

let refreshBundle = NSBundle(forClass: MyEmptyClass.self)
    let bundleURL = newBundle.resourceURL?.URLByAppendingPathComponent("MyBundle.bundle")

    let bundle = NSBundle(URL: bundleURL!)!

Кажется, что не все NSBundle загружаются при запуске, и этот код запускает загрузку нужного пакета.

person aimak    schedule 02.01.2017