Я создаю статическую инфраструктуру iOS (шаблон по умолчанию в Xcode 6), которая включает файлы xib.
Однако у меня возникают проблемы с загрузкой файлов пера при добавлении моего фреймворка в другое приложение, я получаю следующую ошибку:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </private/var/mobile/Containers/Bundle/Application/89B7C8F1-698A-4E0B-AD8F-4DB414A6001B/Sample.app> (loaded)' with name 'MyNibName''
Я пробовал несколько решений, некоторые из которых описаны здесь< /а>. Я все еще не мог решить проблему.
Я вижу много ссылок на этот популярный проект, который в настоящее время не поддерживается, поскольку xcode имеет встроенная функция. Должен ли я использовать это вместо этого?
В моем целевом фреймворке у меня есть xib-файлы, включенные в фазу сборки «Копировать ресурсы пакета», и я вижу их внутри каталога построенного фреймворка, однако я заметил, что структура созданного фреймворка не соответствует структуре, описанной в документация Apple. Даже когда я изменил структуру фреймворка (используя версии и связывая папки Header
и Resources
с текущей версией), я все еще не мог решить проблему.
Я пытался загрузить перо следующими способами:
1 загрузка пакета по имени фреймворка, в данном случае это nil
NSString *resourceBundlePath = [[NSBundle mainBundle] pathForResource:@"myframework" ofType:@"framework"];
resourcesBundle = [NSBundle bundleWithPath:resourceBundlePath];
self = [super initWithNibName:@"MyNibName" bundle:resourcesBundle];
2 Создание пакета ресурсов и добавление его в платформу. Также есть nil
. Обратите внимание, что это решение работает, если я добавляю пакет в проект отдельно, но это противоречит цели фреймворка.
NSString *resourceBundlePath = [[NSBundle mainBundle] pathForResource:@"resources" ofType:@"bundle"];
resourcesBundle = [NSBundle bundleWithPath:resourceBundlePath];
self = [super initWithNibName:@"MyNibName" bundle:resourcesBundle];
3 Загрузка пакета по классам по-прежнему не работает, однако он возвращает тот же набор приложений, что и в [NSBundle mainBundle]
. FrameworkClass
— это любой класс, встроенный в фреймворк.
NSBundle* bundle = [NSBundle bundleForClass:[FrameWorkClass class]];
4 Загрузка основного пакета с [NSBundle mainBundle]
, который не работает и не должен работать.
Я думаю, что происходит то, что ресурсы фреймворка не включаются в окончательное приложение.
Что мне не хватает? Кто-нибудь смог использовать шаблон статической структуры по умолчанию в xcode для создания структуры с файлами пера?
NSBundle* bundle = [NSBundle bundleForClass:[YourFrameWorkClass class]];
- person Midhun MP   schedule 20.02.2015</private/var/mobile/Containers/Bundle/Application/01AD75AF-125D-4B40-9757-B901AB6ECDC0/Sample.app>
- person KDaker   schedule 20.02.2015[NSBundle bundleWithIdentifier:@"com.something.FrameworkName"];
у меня сработало - person Vladimirs Matusevics   schedule 10.04.2015