次の-awakeFromInsert
実装では、ユーザーが追加ボタンを押したときにUIの配列コントローラーによってインスタンス化される新しいオブジェクトのプロパティを設定します。
- (void)awakeFromInsert
{
[super awakeFromInsert];
NSLog(@"Adding perceptron %ld to layer %ld", self.indexInLayer, self.layer.indexInNetwork);
NSLog(@"New perceptron added to layer %@", self.layer );
// more code here to do the configuration
}
問題は、呼び出さself.parent
れたときに新しいオブジェクトの関係が設定されてい-awakeFromInsert
ないため(nil)、親オブジェクトにアクセスするためにそれを使用できないことです(たとえば、子の数や新しいオブジェクトのインデックス)。
上記のコードの出力:
2012-12-17 21:36:39.309 MLPManager[98112:403] Adding perceptron 0 to layer 0
2012-12-17 21:36:39.309 MLPManager[98112:403] New perceptron added to layer (null)
ビューにオブジェクトのインデックスを追加するためにメソッドを呼び出すとindexInLayer
メソッドが完全に機能するため、新しいオブジェクトが正しく接続されていることを確信しています。UITableView
- (NSUInteger)indexInLayer
{
NSUInteger index = [self.layer.perceptrons indexOfObject:self];
//NSLog(@"indexInLayer returning %ld", index );
return index;
}
私のデータモデルには、ネットワーク、レイヤー、パーセプトロンの3つのエンティティがあり、順序集合として配置され、多くの関係(つまり、親-子-孫)によって次のエンティティに接続されています。私のUIには3つのアレイコントローラーと3つのがありUITableViews
ます。子アレイコントローラーには選択した親の子のみが含まれ、孫アレイコントローラーには選択した子の孫のみが含まれるように設定しました。これらのアレイコントローラに子または孫を追加すると、現在選択されている親の子として自動的に設定されます。それはすべてうまくいきます。
self.layer
UIによってどの時点で設定されますか?誰かがこれが後に起こっていることを確認できますか-awakeFromInsert
?もしそうなら、私が内部からそれを行うことができない場合、私はどのように新しいオブジェクトを構成することになっています-awakeFromInsert
か?のAppleのドキュメントに-awakeFromInsert
は、「レシーバーが最初に管理対象オブジェクトコンテキストに挿入されたときに、CoreDataフレームワークによって自動的に呼び出される」と記載されていることに注意してください。
レイヤーオブジェクトやデータ構造の他の部分に関する情報が必要な理由は、新しいパーセプトロンオブジェクトと同時に、他のさまざまなオブジェクト(パーセプトロンの子であるウェイト)を自動的にインスタンス化する必要があるためです。-awakeFromInsert
この種のタスクに使用する必要がありますか?