2015-01-26 1 views
13

Я делаю сегодня расширение, которое загружает статьи из фида и отображает последние. Все это отлично работало на iOS 8, все еще работало на iOS 8.1, а затем появилось iOS 8.1.2, и мы начали жаловаться на то, что сегодня расширение больше не работает. Я пытался отладки на прошивке 8.1.2 устройств, и перед расширением даже запустить, он выходит из строя с этой ошибкой:Сегодня Extension Crashes перед запуском на iOS 8.1.2

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: <__NSConcreteUUID 0x174027280> 5AFB07AB-5DCD-46FE-8D07-44DE0F3789F2)' 

Я прочитал этот пост о частых ошибках, происходящих при разработке расширения сегодня: http://www.atomicbird.com/blog/ios-app-extension-tip

в своем посте, Том Харрингтон говорит:

в IOS 8 (и других последних версиях), что позволяет модули в настройках сборки Xcode означает, что вы не должны явно перечислить все рамки, которые вы хотите использовать. Они будут найдены автоматически.

Но это не относится к NotificationCenter.framework, которые используются сегодня. Если вы удалите это из настроек сборки, вы не получите никаких предупреждений или ошибок сборки. Но когда вы пытаетесь загрузить расширение, вы получите исключение из libextension.dylib, и ваше расширение не будет загружено. Сообщение об исключении не поучительно:

2014-08-16 12: 06: 53,793 TodayTestExtension [41313: 6111763] * Нагрузочный приложение из-за неперехваченного исключением 'NSInvalidArgumentException', причина: «* setObjectForKey: объект не может be nil (key: < __NSConcreteUUID 0x7fd729422390> ED3B42F8-66CD-4CB0-BCD5-F3DBA6F34DB5) ' Если вы используете сегодняшнее расширение, просто оставьте эту структуру в настройках сборки. Этого не должно быть, но это так.

Мое расширение включает NotificationCenter.framework в его настройках сборки, но я подозреваю, что моя проблема может быть аналогичной в некотором роде.

Кто-нибудь сталкивался с подобной проблемой? Любая идея, как его решить?

+0

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

+0

Были ли эти жалобы от пользователей «в поле» или от людей, выполняющих тестовые сборки вашего приложения? Во-первых, это было бы ошибкой 8.1.2, и вы не могли бы много сделать. Во втором случае это может быть проблема с Xcode, которая может быть исправлена. –

ответ

0

В конце концов я попытался удалить NotificationCenter.framework из своей цели и вернуть ее, очистить проект, и теперь он снова работает. Я предполагаю, что структура не была должным образом связана, хотя я мог видеть ее на моей цели с помощью xcode. Кроме того, я не могу понять, почему он работает, а затем прекратил работу с прибытием 8.1.2.

0

Только что испытал ту же проблему. Для меня это было свойство «Основной интерфейс» в «Общие настройки» цели клавиатуры. Он был пустым, и я установил его в свой файл раскадровки, и теперь он работает как шарм. Screenshot

32

Эта ошибка также возникает, если вы используете NSExtensionPrincipalClass внутри «Info.plist», чтобы определить базовый класс (вместо использования раскадровки) с именем ViewController, которого нет.

При использовании Swift убедитесь, что префикс класса имеет имя модуля (обычно это имя цели), например «Module.MyViewController».

+3

Удивительный, это сработало! Затем я изменил его на '$ (PRODUCT_NAME) .' за дополнительную гибкость. – user2565077

+0

Ты спасаешь мою жизнь! – Hilen

+0

Это решение применяется к _any_ расширению. И «При использовании Swift» часть ** важна **. Не забывайте это имя модуля. –

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

  • Нет связанных вопросов^_^