フィードから記事をダウンロードして最新の記事を表示する今日の拡張機能を作成しています。すべてが iOS 8 で問題なく動作し、iOS 8.1 でも引き続き動作し、その後 iOS 8.1.2 が登場し、today 拡張機能が動作しなくなったという苦情が寄せられ始めました。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 のビルド設定でモジュールを有効にするということは、使用するすべてのフレームワークを明示的にリストする必要がないことを意味します。それらは自動的に検出されます。
しかし、これは、Today 拡張機能が使用する NotificationCenter.framework には当てはまりません。ビルド設定からそれを削除すると、ビルドの警告やエラーは発生しません。しかし、拡張機能をロードしようとすると、libextension.dylib から例外が発生し、拡張機能はロードされません。例外メッセージは啓発的ではありません:
2014-08-16 12:06:53.793 TodayTestExtension[41313:6111763] * キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '* setObjectForKey: オブジェクトは nil にできません (キー: <__NSConcreteUUID 0x7fd729422390> BCD5-F3DBA6F34DB5)' 今日の拡張機能を実行している場合は、そのフレームワークをビルド設定のままにしてください。そこにある必要はありませんが、あります。
私の拡張機能にはビルド設定に NotificationCenter.framework が含まれていますが、私の問題は何らかの形で似ているのではないかと思います。
誰もが同様の問題に直面しましたか?それを解決する方法はありますか?