2015-03-02 1 views
0

Я перенесла свой проект с iOS 7 на iOS 8, поддерживая поддержку iOS 7. Поскольку я переделал всю графику, я выбросил старую раскадровку и создал новую, используя новые универсальные раскадровки и классы размеров.Xcode 6 Универсальная раскадровка NSKeyedUnarchiver initForReadingWithData error

Все отлично работает для IOS 8 iPhone/IPad и IOS 7 iPhone, но на прошивке 7 IPad я буду продолжать получать следующее сообщение об ошибке:

[NSKeyedUnarchiver initForReadingWithData:]: data is empty; did you forget to send -finishEncoding to the NSKeyedArchiver? 

приложения даже не дохожу до application:didFinishLaunchingWithOptions и я знаю, проблема - раскадровка, потому что, если я создаю пустую, приложение начнется нормально.

Что мне не хватает? Мне нужна специальная раскадровка только для ipad для поддержки iOS 7? или есть другой способ?

EDIT:

в течение некоторого теста, я нашел, что метод, который кидать исключение составляет:

[storybord instantiateInitialViewController]; 

или

[storyboard instantiateViewControllerWithIdentifier:@"id"]; 

я уже запустил приложение с пустой раскадровки и загрузили мою раскадровку в делегат приложения. Раскадровка не ноль, но приложение рушится на этот метод. Загрузка контроллера просмотра, который не является исходным, не изменяет результат.

+0

Вы удалили исходное приложение с iOS7 ipad/simulator, а затем попытались запустить? Я обнаружил, что иногда старые версии могут мешать новым, особенно на симуляторе, и если вы внесли большие изменения. Также выключите симулятор и перезапустите, если это то, что вы используете. –

+0

Да, я очистил эмулятор от старой версии и перезапустил его, но ничего не добавил – whtman

+0

У этого человека, похоже, есть обратная проблема: http: //stackoverflow.com/questions/28565010/app-crashes-at-run -befor-reach-my-code-xcode6-1-universal-app-objectiv-c-nske. Однако я не согласен с их ответом, поскольку у меня есть приложение, использующее iOS7 и 8 с ограничениями по размеру, и оно отлично работает на iphone и ipad на обеих версиях iOS. –

ответ

1

У меня был тот же самый вопрос, и сузили его к коллекции View, который я установил для моего компактного/любого размерного класса, но деинсталлировать для моего любой/любого размера. Кажется, что iOS 7 имеет проблемы с ячейками прототипов, когда вид коллекции, к которому они принадлежат, удаляется в активном классе размеров. Работа на iOS 8 отлично работает, поэтому, если вы поддерживаете только iOS 8 и выше, вы не столкнетесь с этой проблемой.

Прототип клетки (s) активно (не работает): Uninstalled Collection View with Prototype Cell

Прототип клетки (s) удален (работ): Uninstalled Collection View without Prototype Cell

Чтобы решить эту проблему, я собираюсь создать xib, который будет программно загружен для iPad и будет содержать раскадровку для использования на iPhone. Поскольку для рассматриваемого вида не требуется Collection View на iPad, xib должен быть довольно простым, но все равно от него требуется сделать это с точки зрения обслуживания.

+0

Привет Cubd, я думаю, что ваше решение является правильным, мой случай был таким же, как ваш, но так как мне нужен просмотр коллекции на iPad и iPhone, я просто включил его на iPad, и все сработало. Я буду отмечать ваш ответ как правильный, потому что более совершенен. – whtman

0

Я, наконец, смог его решить, я узнал, что элемент с выходом в viewController имеет только класс размера iphone (я забыл добавить его в обычный класс обычного размера), это вызвало ошибку ,

Добавление его к обычному \ регулярного размерного класса решена проблема