gpt4 book ai didi

iphone - 从 Core Data 中的 View 传递数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:50:54 28 4
gpt4 key购买 nike

大家好——我是 iPhone 编程和 Core Data 的初学者。我目前正在尝试学习 Core Data 背后的一些理论,并且一直在使用 this帮助我在我的应用中实现它的教程。

本教程通过使主视图成为列出已保存对象的 UITableViewController 和另一个保存对象(在其中输入属性)的 UITableViewController 进行教学。

我正在创建的应用程序有 3 个 View 。主视图是一个普通的 UIViewController(它处理计算),您可以通过点击 UIBarButtonItem 来保存您的计算,这会将您带到第二个 View ,您可以在其中输入更多内容具体属性。点击保存后,您将返回到主视图,您可以在其中点击显示已保存的按钮来访问包含已保存对象的 UITableViewController

我已将 #imported UITableViewController 文件包含到我的主视图的界面文件中,但是当我运行该程序时,我在我的 prepareForSegue 方法中的这一行出现错误:

    addShoeSizeTVC.managedObjectContext = self.managedObjectContext;

错误是“在‘SSFViewController*’类型的对象上找不到属性 managedObjectContext”我理解这个错误的含义——我的 SSFViewController 类中没有任何名为 managedObjectContext 的对象,但我想如果我包括我的确实包含 managedObjectContext 的文件,它仍然可以被识别。我应该补充一点,在本教程中,prepareForSegue 方法包含在用于添加新对象 UITableViewController 的 ListView 中。我将此方法移至我的 mainViewController

我的 App Delegate 在我的 ApplicationDidFinishLaunchingWithOptions 方法中也出现错误:

    controller.managedObjectContext = self.managedObjectContext;

我知道这源于与另一个错误相同的问题(它给出了相同的错误消息)。

我不明白如何将数据从我的 viewA(主视图)传递到 viewB(添加对象),返回到 viewA,然后传递到 viewC(查看保存的对象)。我听说过委托(delegate)并在我的 SSFViewController 主视图的 prepareForSegue 方法中使用它:

- (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 或其他委托(delegate)方法?还是我必须将其添加到我的任何 TableView 中???

非常感谢。如果提供正确的信息,我觉得这是一个很容易解决的问题。如果需要解决问题,我很乐意发布我使用的任何其他方法。我是初学者,所以如果您能以初学者友好的方式进行解释,那就太好了。

谢谢!

最佳答案

首先,如果你想从ViewA传数据到ViewB,在ViewB中插入一个property,你就可以将ViewA的数据传递给这个@property

示例

View B:

@property (nonatomic, strong) NSString *yourName; (don't forget to call @synthesize yourName )

ViewA:(在 prepareForSegue 方法中)

"ViewB-Controller" *controller = segue.destinationViewController; controller.yourName = self.name

--> name 将传递给 ViewB

第二个:我更喜欢从 ViewB 发送到 ViewA 的代表“嘿,请保存您的数据”。它使您的 Controller 变得简单和智能,并且您不必管理所有 View Controller 的保存方法。 Delegate 是 iOS 中的一个重要章节,对于初学者来说可能会非常沮丧。 (我在 9 个月前处于同样的情况;))搜索委托(delegate)示例并尝试了解它的工作原理(边做边学),如果您对委托(delegate)有进一步的疑问,我会友好地回答您的问题。

关于iphone - 从 Core Data 中的 View 传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10983744/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com