Xcode 4.5 повреждает XIB?

Я использую новый xcode 4.5, У меня есть эти строки кода на каком-либо контроллере представления:

DiscoverCell* cell=[table dequeueReusableCellWithIdentifier:@"DiscoverCell"];
if(cell==nil){
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DiscoverCell" 
                                                 owner:self 
                                               options:nil];
    cell = [nib objectAtIndex:0];
} 

когда я запускаю приложение его бросание: Завершение приложения из-за неперехваченного исключения "NSInternalInconsistencyException", причина: "Данные NIB недействительны". на линии LoadNib, что это? этот xcode - это какой-то яблочный мусор?

Ответ 1

Снимите флажок "Использовать автоспуск", выделенный на рисунке ниже. Xcode 4.5 позволяет это свойство по умолчанию для новых файлов nib, которые вы добавляете в свой проект. Если снять флажок автоотключения, проблема решена.

Ответ 2

У меня была эта же проблема и исправлена ​​ее, сняв флажок "Использовать автозапуск" на панели "Инспектор документов" в "Утилиты".

Ответ 3

У меня просто была эта проблема и отследил ее до UIButton, у которого было задано поле Title Attributed in Attributes Inspector. Изменение этого на Plain устраняло проблему. Если я правильно помню, я добавил эту кнопку в последнюю версию Xcode и тогда имел проблемы с ней.

Ответ 4

Для меня это была комбинация комментария Джейсона Коко и ответа tomgerhardt: мое приложение нацелено на iOS5, я обновился до Xcode 4.5 и создал новый NIB. По умолчанию этот целевой iOS6 вызывает сбои. Я установил это в iOS5 в окне инспектора файлов NIB.

Затем я получил ошибку компилятора, в которой говорилось, что использование Autolayout не поддерживается для iOS5, оказалось в Инспекторе документов, и моя проблема была исправлена.

Ответ 5

Я использую Xcode 4.5 и iPhone simulator 5.0, и это та же самая ошибка, когда была показана первая таблица. Следуя советам "снять отметку с автоаудита", я получил его работу, переместив Document Versioning в iOS 5.0. (Выбранная раскладушка → вкладка "Идентификация файла" → "Документ конструктора интерфейса → " Версии документа ".) AutoLayout уже не выбран.

Ответ 6

Итак, примерно через час, пытаясь понять это, я понял проблему. Это действительно то, что описано выше: убедитесь, что ваш .xib установлен в одну и ту же целевую версию (в данном случае, скорее всего, < 6.0), как то, что было написано вашим основным приложением, и снимите флажок "Использовать автозапуск" в параметрах для этот конкретный .xib.

Причина, по которой он будет работать в симуляторе, заключается в том, что на вашем симуляторе работает iOS6. При попытке использовать устройство со старым iOS это приведет к ошибке. Моя проблема заключалась в том, что я создавал пользовательский TableViewCell, который по умолчанию был предназначен для iOS 6 и был установлен флажок "Использовать автозапуск". Это было преступником для меня.

Надеюсь, я смогу спасти кого-то там от горя, с которым я столкнулся с этой ошибкой!

Ответ 7

После отключения Auto-Layout для всех моих файлов .xib у меня все еще была ошибка. Это было связано с тем, что я использовал Text → Attributed для UILabel в файле .xib.

После установки на Plain ошибка исчезла.

Ответ 8

Имя после "loadNibNamed:" должно быть именем файла nib (в навигаторе проекта в левой части экрана), иногда люди пишут "идентификатор ячейки", который записывает с самого начала в CellForRowAtIndexPath (статический NSString...).

Может быть, ваша проблема в этой небольшой ошибке?