にジェネリッククラスから継承したクラスを使用しているとき、それは今自体から継承するジェネリッククラスFetchedResultsTableViewController<TResultType, TCellType>
から継承するよう、私は最近、UITableViewController
からの単純な継承から私のクラスBookTableViewController
をリファクタリングUITableViewController
。「インターフェイスビルダーファイルで不明なクラス」ストーリーボード
クラスの宣言は次のようになります。ストーリーボード、カスタムクラスとモジュールで
class BookTableViewController: FetchedResultsTableViewController<Book, BookTableViewCell> {
override func viewDidLoad() {
// breakpoints in here do not catch!
}
}
class FetchedResultsTableViewController<TResultType, TCellType: UITableViewCell>:
UITableViewController, NSFetchedResultsControllerDelegate {
// implementation here
}
は、両方のセットであり、私は示唆、BookTableViewController
クラスのコードにジャンプするには、矢印をクリックすることができますストーリーボードがクラスに正しくリンクされていること。しかし、私は、アプリケーションを実行しようとすると、クラスが認識されない - viewDidLoad()
でコードが実行されない、と私のアプリ実行しているとき、私は、次のログに記録されたメッセージを受信します。
Interface Builderのファイルで不明なクラス_TtC12Reading_List23BookTableViewControllerを。
私はXCode 7.3(Swift 2.2)を実行しています。これはStoryboardsのバグでの制限ですか、何かを見逃しましたか?
ありがとうございます!
UPDATE:
いくつかの実験をした後、一般的な継承ではなく、クラスのアクセスに関連すると思われるん。定義された以下のクラスでは:(ジェネリッククラスでも動作しませんが、ストーリーボードでの型引数を指定する方法はありませんよう、)
import Foundation
import UIKit
// Both of these classes are accessible by the Storyboard
class FirstInheritance : UITableViewController{}
class SecondInheritance : FirstInheritance{}
// The generic class is also accessible
class GenericViewController<T> : UITableViewController{}
// But this class is not accessible...
class ConcreteViewController : GenericViewController<String>{}
ConcreteViewController
を除くすべてのクラスは、ストーリーボードのクラスオートコンプリートで提案されています。
は、それがストーリーボードがFetchedResultsTableViewControllerについて知らないことは可能ですか? –
あなたのコメントに基づいて、私はストーリーボードのクラスフィールドが 'FetchedResultsTableViewController'を自動完成したが、' BookTableViewController'に自動補完していないことに気付きました。 (もちろん、型引数を指定することはできないので、 'FetchedResultsTableViewController'は機能しません)。 質問の更新で、より簡単な動作例を作成しました。例[here](https://github.com/AndrewBennet/GenericTableView)も参照してください。私はこれがストーリーボードの限界だと思っています... –
ああ、はい、それは限界です。基本的に同じ質問がここで尋ねられました:http://stackoverflow.com/a/32899800。私は代わりにデフォルトの動作のためのタイプリアーゼと拡張機能を持つプロトコルを使ってみるかもしれません。 –