Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 核心数据-基本问题_Iphone_Objective C_Core Data - Fatal编程技术网

Iphone 核心数据-基本问题

Iphone 核心数据-基本问题,iphone,objective-c,core-data,Iphone,Objective C,Core Data,我想知道以下在Objective-C中是如何工作的 在我的头文件中,我有以下从不同的视图控制器初始化的文件 @interface UserLookup : UIViewController { NSManagedObjectContext *referringObject; } 在我的实现文件中,我必须将这个NSManagedObjectContext传递给2个子视图控制器,然后它是否会影响首先调用哪个视图控制器。。。并且,NSManagedObjectContext是否在任何一个子

我想知道以下在Objective-C中是如何工作的

  • 在我的头文件中,我有以下从不同的视图控制器初始化的文件

    @interface UserLookup : UIViewController {
        NSManagedObjectContext *referringObject;
    }
    
  • 在我的实现文件中,我必须将这个
    NSManagedObjectContext
    传递给2个子视图控制器,然后它是否会影响首先调用哪个视图控制器。。。并且,
    NSManagedObjectContext
    是否在任何一个子控制器中更改


    视为FAIK,首先使用哪个viewController不应该有什么区别。将NSManagedObjectContext视为指向物理数据源的指针

    您可以从上下文中添加和删除NSManagedObjects。但这些更改仅在调用
    save:
    方法时保存到磁盘


    这有帮助吗?

    您不需要将它传递给每个需要核心数据访问的视图控制器,只要使用

    NSManagedObjectContext* moc = [(MyAppDelegateClass *)[[UIApplication sharedApplication] delegate] managedObjectContext];
    
    managedObjectContext
    必须是应用程序代理的可访问ivar


    它使它在概念上也很相似。有一个NSManagedObjectContext(在大多数简单的应用程序中,您可以有多个),由您的应用程序代理拥有。你永远不会保留或释放它(除了在app delegate中创建时,如果您使用的是Apple的模板代码,则在首次访问时,以及在app delegate的
    dealloc

    中发布时,仅使用一个上下文非常简单且效果良好。但您也可以创建一个新的托管对象上下文并将其传递给另一个视图控制器。尽管e只是一个,但可以有多个上下文

    每个上下文都有每个撤消管理器,因此您可以控制上下文中托管对象的更改。即使另一个上下文也有一些更改,您也只能在一个上下文中保存更改。保存上下文后,您可以通过以下NSManagedObjectContext实例方法合并两个上下文的更改:

    - (void)mergeChangesFromContextDidSaveNotification:(NSNotification *)notification
    - (void)refreshObject:(NSManagedObject *)object mergeChanges:(BOOL)flag
    
    也许本文档可以帮助您了解更多细节。


    CoreDataBooks Apple示例代码使用了额外的上下文。

    感谢您的回答。我已经帮助我理解了一些基本概念。希望我能很快回答问题:)(y)谢谢你的回复。这确实解决了问题。但是,由于这里的人物限制,我不得不单独为你发布另一个问题,如果你能研究一下,我将不胜感激@