当用户按下添加按钮时,以下-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;
}
我的数据模型有三个实体:网络、层、感知器排列为有序集,并通过一对多关系(即父-子-孙)连接到下一个。我的 UI 有三个数组控制器和三个UITableViews
. 我已将其设置为子数组控制器仅包含选定父项的子项,而孙子数组控制器仅包含选定子项的孙子项。当我将子或孙子添加到这些数组控制器时,它们会自动设置为当前选定父级的子级。这一切都很好。
self.layer
UI在什么时候设置?有人可以确认这是在之后发生的-awakeFromInsert
吗?如果是这样,如果我不能从内部配置一个新对象,我应该如何配置-awakeFromInsert
?我注意到 Apple 文档-awakeFromInsert
说它“在接收器首次插入托管对象上下文时由 Core Data 框架自动调用”。
我需要有关层对象和数据结构其他部分的信息的原因是,我需要同时自动实例化各种其他对象(作为感知器子级的权重)作为新的感知器对象。我应该使用-awakeFromInsert
这些类型的任务吗?