2013-04-16 2 views
4

Я добавил новую локализацию для итальянского языка в свой проект, после чего я локализовал xib-файл, чтобы начать перевод проекта. Проблема в том, что теперь, когда я запускаю свой проект в симуляторе, ни один из xib не найден.Xib не найден после локализации

(GAIUncaughtExceptionHandler.m: 41): Uncaught исключение: Не удалось загрузить СИБ в пачке: «NSBundle ...

Я инстанцировании владелец файла этого XIb используя initWithNibName.

Я пробовал как чистую локализацию xib, так и базовую локализацию, но никто из них не работает.

Я инициализация владелец так:

[[SPConfigViewController Alloc] initWithNibName: @ "SPConfigViewController" пачка: ноль];

EDIT:

После того как я создал локализованную версию XIb, я решил просто закрыть XCode и открыть его снова, и он работал ...

+0

Показать код, когда вы вызываете 'initWithNibName'. –

ответ

24

я имел тот же опыт, и то, что ум путешествие ...

Процесс:

(Предполагает проект, который выбрал «Использовать базовую интернационализацию» в Info Проекта)

  1. Кликните на .xib ресурс в File Navigator, который загружает Interface Builder
  2. Использование инспектора файла нажмите кнопку Localize
  3. модальных подарки просим, ​​какой язык вы хотели бы использовать («Base» были недоступны для меня, поэтому я выбрал «английский язык»)
  4. Теперь в локализованной части инспектора File галочка рядом с английским языком и ни рядом с базой, так что я проверил базы
  5. Затем я получил подборщик для того, как я хотел английский локализован: Interface Builder Cocoa Touch XIB или Localizable струны

Ладно, я был оптимистично, что это сработает, поэтому ru п ...
... и аварии

*** Нагрузочный приложение из-за неперехваченного исключением 'NSInternalInconsistencyException', причина: 'Не удалось загрузить СИБ в пачке:' NSBundle </вар/мобильный/Применения/_____/_____.приложение> (загружен) 'с именем '__MY NIB STRING HERE___''

Clean, Build, Run -> Краш
Option Key + Clean, Build, Run -> Краш
Option Key + Очистить, Удалить App, Build, Run -> Краш
Option Key + Clean, Reset Simulator, проклятье, Build, Run -> Краш

Бросить Xcode, Перезапустить Xcode, Build, Run -> Работает! WTF.

Я открыл отчет об ошибке against the issues и был бы признателен, если вы столкнетесь с этой проблемой, что вы ее продублируете, чтобы команда разработчиков разработчиков знала свою повторяющуюся проблему.

+1

Перезагрузка XCode работает как шарм ... haha ​​ –

+0

Та же проблема с Xcode 4.6.3. Option Key + Clean, Reset Simulator, Curse, Quit Xcode, Relaunch Xcode, Build, Run -> Работает для меня: D – Daniel

+0

Удаление приложения из симулятора, выход из Xcode и ручное удаление папки с производными данными обычно исправляют это для меня. – wrightak

0

Вы могли бы сделать так:

[[YourViewController alloc] initWithNibName:@"YouViewController.xib" bundle:nil] 

не используйте расширение для имени СИБ зрения контроллера, попробуйте как ниже:

[[YourViewController alloc] initWithNibName:@"YouViewController" bundle:nil] 
+0

Вот как я инициализирую его: [[SPConfigViewController alloc] initWithNibName: @ "SPConfigViewController" bundle: nil]; – MouseCaneta

1

Это связано с тем, что локализация файла xib перемещает его в новый каталог (base.lproj) внутри корневого каталога проектов, после чего xcode больше не может найти файл xib.

Я решил это, перейдя в файл проекта, выбрав мою цель, перейдя на вкладку фазы сборки. Затем, если вы разворачиваете папку «Ресурсы копирования Bundle», вы должны заметить, что файл, о котором жаловался в NSException, окрашен в красный цвет. Я удалил этот файл и прочитал локализованную версию, найденную в подпапке «base.lproj», и это, похоже, устранило проблему.

Насколько я знаю, это необходимо сделать для каждого локализованного xib, что является тонкой ненужной faffing around (thanks xcode ...), но, к сожалению, приложение больше не сработает.

+0

Я пробовал это снова и снова, никаких исправлений. Перезапустить Xcode тоже не удалось. Используя git, я сбрасываю все изменения. Но я очень хочу использовать базовую интернационализацию. Вы узнали об этом больше? –

0

Убедитесь, что файл локализован для всех языков. Я оставил англичан непроверенными, и это потерпит неудачу. Я не мог заставить его правильно отображаться в «Ресурсах копирования Bundle», пока я не проверил английский язык, а затем снова добавил початок. Вы можете сказать, что это нормально, потому что он не будет красным, и он скажет: «... in/MyProject/(локализация) .lproj», где MyProject, конечно же, будет именем вашего проекта.

Смежные вопросы