2013-06-03 3 views
3

У меня странная ошибка в моем приложении iOS. С вчерашнего дня все хорошо работало, и сегодня я сделал некоторые улучшения в контроллере просмотра, который не имеет ничего общего с AppDelegate, и когда я попытался проверить изменения, которые я сделал на симуляторе, я получил эту ошибку:NSInternalInconsistencyException uncaught exception 'NSInternalInconsistencyException', причина: 'Не удалось загрузить NIB в пакете: NSBundle с именем

* Нагрузочный приложение из-за неперехваченного исключением «NSInternalInconsistencyException», причина: «не удалось загрузить СИБ в пачке:„NSBundle (загружен)“с именем„ххх“

Я искал много в Google и этот сайт, чтобы попытаться найти решение, и все темы, которые я нашел, говорили о проблемах с xi b файлов. Тем не менее, я использую раскадровки, а мое приложение - iOS6.1, так что у меня нет файлов xib ... Я также проверил, что раскадровка была включена в «Build Phases», и все кажется правильным: s. Я знаю, что эта ошибка может произойти, когда некоторые файлы были включены в Finder, но не в Xcode, однако это не относится ко мне: я всегда включал файлы непосредственно в Xcode и проверял опцию «копировать файлы в каталог». Я даже пытался отменить изменения, которые я сделал, и у меня все еще есть эта проблема, поэтому я действительно не знаю, что происходит. На этом этапе мое приложение очень простое, у меня просто есть пара контроллеров, подключенных через контроллер навигации и 1 внешняя инфраструктура (AFNetworking). Мой AppDelegate (где ошибка, похоже, происходит) чиста: я ничего не добавлял к образцу кода, который был предоставлен Xcode.

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

+0

Вы локализовали свою раскадровку? – danypata

+0

Нет, у меня есть локальная раскадровка «en», которая была автоматически предоставлена ​​(я думаю). Но я не сделал ничего, чтобы локализовать мое приложение. – user2285781

+0

Еще одна вещь, нажмите на свой файл раскадровки -> Показать инспектор файлов -> целевое членство, убедитесь, что в проекте есть отметка. – danypata

ответ

1

Сначала попробуйте использовать пункт меню Xcode/Product/Clean. Если это не так, перейдите в «Организатор», переключитесь на «Проекты» и удалите папку «Производные» для вашего проекта. Если вы сделаете второй, закройте Xcode и начните снова, чтобы убедиться, что все вытерто.

РЕДАКТИРОВАТЬ: если вы хотите, застегните вещь и отправьте ее на мой адрес электронной почты в моем профиле. Я могу потратить на это несколько минут, но, по крайней мере, посмотрю.

EDIT2: узнал несколько вещей здесь, но не исправил. То, что вы видите, это то, что StoryBoard пытается обработать rootViewController и не удается - делегат приложения даже не получает сообщений. Класс EventsTVC отправляется initWithCoder:, а затем запрашивается имя nibName, которое оно возвращает. Это имя nibName является идентификатором в раскадровке - и это то, что внутренне Apple должно использовать для создания наконечника. Однако это не удается. Вы можете видеть название, добавив в EventsTVC:

- (NSString *)nibName 
{ 
    NSLog(@"NIB NAME %@", [super nibName]); 
} 

Что я сделал, чтобы воспроизвести проблему было создать новый StoryBoard Master/Detail приложение, и добавьте к этому RootViewController:

- (NSString *)nibName 
{ 
    NSLog(@"NIB NAME %@", [super nibName]); 
    return [[super nibName] stringByAppendingString:@"foo"]; 
} 

Этот конечно, делает nibName фиктивным, и это приводит к тому, что приложение терпит неудачу, если вы это делаете, с тем же сообщением.

У вас есть два варианта: вы можете записать инцидент DTS на этом - посмотрите, можете ли вы заставить Apple исправить его (может занять несколько дней), или вы можете просто переделать проект и скопировать столько, сколько вы может вернуться в новое приложение.

В любом случае было бы здорово, если бы вы могли отправить тот же ZIP-файл в Apple и создать на нем отчет об ошибке. Я подозреваю, что раскадровка коррумпирована внутри страны, но нет никаких общедоступных методов, которые можно было бы вникать в нее (посмотрите на UIStoryBoard).

+0

Я попробовал оба. Метод «Чистый» ничего не меняет и не меняет ... У меня все еще возникает проблема, когда я запускаю приложение на симуляторе, исключение происходит в «основной» функции. – user2285781

+0

Не обязательно - это показывает, когда вы отправляете блоки в основную нить. У вас есть контрольная точка исключения? Если не установить его (поиск здесь, как установить один - его довольно легко). Идея состоит в том, чтобы попасть в отладчик, где это происходит. Ваши улучшения - без изменения имени, не так ли? Вздох - у меня мало опыта работы с раскадровки. –

+0

Да У меня есть точка останова исключения, которая показывает «главную» функцию до того, как будет выбрано исключение. Затем, если я нажму, продолжу исключение, которое я вставил. Я не изменял ни одного имени ViewController, когда делал улучшения, и, как я уже сказал, я пытался их вернуть, и у меня все еще есть проблема ... – user2285781

1

Поскольку ios7 и Xcode 5, он делает это для меня каждое утро! Я не знаю, какой беспорядок они сделали в xcode, но это раздражает. Если вы хотите передать эту ошибку, перейдите к организатору, затем удалите «производные данные» (если каким-то образом он не хочет удаляться, удалите его в терминале с добрым старым rm -rf), а затем запустите приложение, оно снова рухнет, на этот раз перейдите к симулятору и нажмите на настройки сброса и все остальное. Теперь запустите приложение снова, сделанное :)!