gpt4 book ai didi

objective-c - 使用 Core Data 在多个 View Controller 之间共享数据

转载 作者:行者123 更新时间:2023-11-29 11:16:56 25 4
gpt4 key购买 nike

我有一些继承自 UIViewController 子类的 View Controller ,我们将其称为 SpecialViewController。 SpecialViewController 的要点是存储所有其他 View Controller 可以继承的所有冗余属性等。应用程序的生命周期从第一个 View Controller 到最后一个 View Controller ,收集一些信息,以便最后一个 View Controller 将完整的数据条目保存到 Core Data。目前我的 AppDelegate 是我的模型、上下文和持久存储协调器,我有一个名为 Person 的 NSManagedObject 子类。我的问题是,将数据构建到最后一个 View Controller 然后保存的最佳方法是什么?

我可以将我的 Person NSManagedObject 实例从 View Controller 传递到 View Controller ,直到它准备好提交到 Core Data 数据库吗?

如果是这样,让我的 SpecialViewController 的指定初始化程序是这样的方法是不是糟糕的设计:

-(id)initWithManagedObjectInstance:(Person *)personManagedObject

然后最后我可以获取完整的“Person”数据集(在最后一个 View Controller 中)并将其提交到数据库...?

请随意讨论我的想法,我想尽可能以最好的方式构建它。

最佳答案

不,我认为这行不通。您通常这样做的方式,或者至少是我这样做的方式,是将您的 ManagedObjectContext 从您的 AppDelegate 传递到您的第一个 SpecialViewController,然后从那里将它传递到每个连续的 SpecialViewController。确保 SpecialViewController 具有定义为 @property (nonatomic, retain) NSManagedObjectContext *managedObjectContext; 的属性,然后将其设置为您所在的任何类的 ManagedObjectContext:specialViewController.managedObjectContext = self.managedObjectContext ; 为您创建的每个新的 SpecialViewController。然后你可以在最后保存它:

    NSError *error;
if (![self.managedObjectContext save:&error]) {
NSLog(@"Error saving: %@", error);
// Error handling
}

编辑:哦等等,我明白你在说什么,抱歉。是的,我想你可以。哈哈。虽然还没有尝试过。我可能会通过创建一个与核心数据无关的 Person 来做到这一点,将其从一个 View 传递到另一个 View ,然后当我需要保存它时,创建一个与核心数据相关的 insertNewObjectForEntityForName:inManagedObjectContext : 并将所有信息从另一个复制到新的。

关于objective-c - 使用 Core Data 在多个 View Controller 之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9040902/

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