Я создаю статическую инфраструктуру iOS (шаблон по умолчанию в Xcode 6), который включает в себя xib файлы.
Однако у меня возникли проблемы с загрузкой файлов nib при добавлении моей рамки в другое приложение, я получаю следующую ошибку:
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 файлы, включенные в фазу сборки Copy Bundle Resources, и я вижу их внутри встроенного каталога фреймворка, однако я заметил, что структура созданной структуры не соответствует структуре, описанной в документация к яблоку. Даже когда я изменил структуру структуры (используя версии и привязывая папки 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, чтобы создать фреймворк с файлами nib?