大家好 - 我是iPhone编程和核心数据的初学者。我目前正在尝试学习核心数据背后的一些理论,并且一直在使用this教程来帮助我在我的应用程序中实现它。
本教程通过使主视图为列出已保存对象的UITableViewController
和保存对象的另一个UITableViewController
(在属性中输入的位置)来教导。
我正在创建的应用有3个视图。主视图是普通UIViewController
(它处理计算),您可以通过点击UIBarButtonItem
来保存计算,该UITableViewController
将您带到第二个视图,您可以在其中输入更具体的属性。点击“保存”后,您将返回主视图,在该视图中,您可以点击“显示已保存”按钮以访问包含已保存对象的UITableViewController
。
我已将#{1}}文件#imported到我的主视图的界面文件中,但是当我运行该程序时,我在prepareForSegue
方法中出现错误:
addShoeSizeTVC.managedObjectContext = self.managedObjectContext;
错误是“在'SSFViewController *'类型的对象上找不到属性managedObjectContext”我理解这个错误的含义 - 我的SSFViewController类中没有任何名为managedObjectContext的对象,但我想如果我包含了我的包含仍然可以识别的managedObjectContext的文件。我应该补充一点,在教程中,prepareForSegue
方法包含在列表视图中,用于添加新对象UITableViewController
的segue。我将此方法移至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
或其他委派方法?或者是我必须添加到我的任何表视图中的东西???
非常感谢你。如果提供正确的信息,我觉得这是一个简单的问题需要解决。我很乐意发布我用过的任何其他方法来解决问题。我是初学者,所以如果你能以初学者友好的方式解释,那就太棒了。
谢谢!
答案 0 :(得分:1)
首先,如果您想要从ViewA到ViewB的数据,请在ViewB中插入一个属性,您可以将数据从ViewA传递到此@property
示例强>
ViewB:
@property(nonatomic,strong)NSString * yourName; (别忘了打电话给@synthesize你的名字)
ViewA :(在prepareForSegue方法中)
“ViewB-Controller”* controller = segue.destinationViewController; controller.yourName = self.name
- >名称将传递给ViewB
第二: 我更喜欢从ViewB发送给ViewA的代表“嘿,请保存您的数据”。它使您的控制器变得简单而智能,您无需从所有视图控制器管理保存方法。委托是iOS中的一个重要章节,对初学者来说可能会非常沮丧。 (我在9个月前的情况相同;)) 搜索代理示例并尝试了解它的工作原理(边做边学),如果您对代理有进一步的疑问,我会友好地回答您的问题。
答案 1 :(得分:0)
视图控制器不是managedObjectContext属性,而是UIManagedDocument。
上下文通常被描述为“便笺簿”,您的应用程序将在其中使用数据存储。