大家好——我是 iPhone 编程和 Core Data 的初学者。我目前正在尝试学习 Core Data 背后的一些理论,并一直在使用本教程来帮助我在我的应用程序中实现它。
本教程通过使主视图一个UITableViewController
列出已保存的对象和另一个UITableViewController
保存对象(您在其中输入属性)来进行教学。
我正在创建的应用程序有 3 个视图。主视图是一个普通视图UIViewController
(它处理计算),您可以通过点击 a 来保存您的计算,UIBarButtonItem
这会将您带到第二个视图,您可以在其中输入更具体的属性。点击保存后,您将返回主视图,您可以在其中点击“显示已保存”按钮以访问UITableViewController
包含的已保存对象。
我已将#importedUITableViewController
文件包含到我的主视图的界面文件中,但是当我运行程序时,我的prepareForSegue
方法中的这一行出现错误:
addShoeSizeTVC.managedObjectContext = self.managedObjectContext;
错误是“在'SSFViewController *'类型的对象上找不到属性managedObjectContext”我理解这个错误的含义-我的SSFViewController类中没有任何名为managedObjectContext的对象,但我想如果我包含我的文件包含仍可识别的 managedObjectContext。我应该补充一点,在本教程中,该prepareForSegue
方法包含在列表视图中,以便继续添加新对象UITableViewController
。我将此方法移至我的mainViewController
.
在我的ApplicationDidFinishLaunchingWithOptions
方法中,我的 App Delegate 中也出现错误:
controller.managedObjectContext = self.managedObjectContext;
我知道这源于另一个错误的相同问题(它给出了相同的错误消息)。
我不明白如何将数据从我的 viewA(mainView)传递到 viewB(添加对象),再传回 viewA,然后再传到 viewC(查看保存的对象)。我听说过委托,并在我的主要观点中在我的prepareForSegue
方法中使用它:SSFViewController
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"Add Object Segue"]) {
NSLog(@"Setting ObjectsTVC as a delegate of AddObjectTVC");
AddObjectTVC *addObjectTVC = segue.destinationViewController;
addObjectTVC.delegate = addObjectTVC.self;
addObjectTVC.managedObjectContext = addObjectTVC.self.managedObjectContext;
}
}
同样addObjectTVC.delegate = addObjectTVC.self;
在线上我收到一条警告,上面写着“将'AddObjectTVC *'传递给不兼容类型'id'的参数”
我是否必须在我的主视图中设置一个NSManagedContext
或另一个委托方法?或者它是我必须添加到我的任何表视图中的东西???
非常感谢。如果提供正确的信息,我觉得这是一个很容易解决的问题。如果需要解决问题,我很乐意发布我使用的任何其他方法。我是初学者,所以如果您能以对初学者友好的方式进行解释,那就太好了。
谢谢!