19

Today 拡張機能は Swift アプリには表示されませんが、Objective C アプリには表示されます。

私がしたことは、迅速で客観的な C アプリのストーリーボードにいくつかのコンテンツを含む UILabel を追加することでした。

Objective C アプリを実行すると表示されましたが、Swift アプリを実行したときは表示されませんでした。

ここで何か不足していますか?

4

4 に答える 4

26

提供された init メソッドはコメントアウトできます。

//    init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
//        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
//        // Custom initialization
//    }

これにより、拡張機能が適切に実行されます。この問題は、Swift と Objective-C の間でイニシャライザの動作が異なることが原因のようです。上記の初期化子を削除すると、必要なすべての初期化子がスーパークラスから継承されます。

参考までに、アップル開発者フォーラムでその解決策を見つけてください。

注:Clean and Build変更が有効になる前に、これを行った後にプロジェクトに変更する必要がある場合があります

拡張機能は実際にはクラッシュしており、次のようなエラーが発生しています:

fatal error: use of unimplemented initializer 'init(coder:)' for class 'com_blabla_blabla_MyTodayExtension.TodayViewController'

これは、別のオプションを実装することを示しています。

init(coder aDecoder: NSCoder!) {
    super.init(coder: aDecoder)
    // Custom initialization here
}

カスタム初期化を行う機能を保持したい場合。

于 2014-06-06T20:54:20.717 に答える
3

アプリ拡張ターゲットには、アーキテクチャ ビルド設定に arm64 (iOS) または x86_64 アーキテクチャ (OS X) を含める必要があります。

Apple のドキュメントを参照してください

于 2014-09-24T09:07:03.553 に答える
2

Xcode6 はベータ版であり、これはバグです。新しいリリースを待つ必要があります。

于 2014-06-06T05:43:58.643 に答える