问题标签 [nsmanagedobjectcontext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1470 浏览

iphone - ManagedObjectContext 似乎在保存后发生了变化,并且不能被其他一些 ViewController 更改

我在 AppDelegate 类中创建了一个 MOC。我的 RootView 中有一个 MOC 属性,由 AppDelegate 设置,例如:

这个 rootView 有时会创建一个 ModalView 并以同样的方式在那里设置一个 MOC 属性。

一切正常。我可以创建新的托管对象,视图可以访问它们并删除它们。

直到我做了一个[self.managedObjectContext save:&error](当应用程序进入后台时在 AppDelegate 类中)。

在此之后,如果我在 rootView 中创建一个新的托管对象,我无法通过模态视图删除这个新对象,例如:[self.managedObjectContext deleteObject:managedObject]

应用程序崩溃。有时我在控制台中有一条错误消息,例如:NSManagedObjectContext 无法删除其他上下文中的对象。

因此,似乎在保存后 MOC 会以某种方式发生变化。

那里发生了什么,我错过了什么。

我正在使用 iOS 4.1。

谢谢和欢呼,

0 投票
1 回答
392 浏览

cocoa-touch - NSManagedObjectContext 依赖注入我做错了什么?

我正在尝试按照Marcus Zarra的建议使用 NSManagedObjectContext 依赖注入——我在我的 AppDelegate 中创建一个 MOC 并将其作为保留属性传递给我的每个视图控制器。

一般来说,这似乎运作良好,但在通过 NSFetchedResultsController 呈现数据的模态表视图控制器中,我只能看到启动应用程序时数据库中的内容。也就是说,如果用户在运行时添加数据,它会正确添加到数据库中,但在打开模式 ViewController 并创建 NSFetchedResultsController(使用注入的 NSManagedObjectContext)时不会出现。但是,如果我关闭应用程序并重新启动,然后打开模态视图控制器,我确实会看到在上一个会话中添加的数据。

在创建 NSFetchedResultsController 之前,我是否必须以某种方式刷新 MOC?我绝对确定模态视图控制器和 NSFetchedResultsController 正在创建,并且在输入新的用户数据后正在执行提取。

0 投票
1 回答
666 浏览

iphone - 刷新 MOC 后 CoreData 无法完成故障 - 如何解决?

我是 iphone 开发的新手,并且对 Core Data 有这个问题。

目前我的应用程序工作如下:

  1. 我正在从 Core Data 执行获取并在 TableView 中显示我的对象列表

  2. 按照建议,分离新线程,为其创建新的 MOC,

  3. 获取 xml,解析它,然后清除 Core Data 并用来自 xml 的新数据填充它

  4. 保存我的 MOC。

如果用户在保存 MOC 时没有滚动 TableView,它工作正常,但如果他是,我会收到此错误并且应用程序崩溃。

任何人都可以用简单的英语解释为什么会发生这种情况以及我该如何解决这个问题。

非常感谢。

0 投票
2 回答
10568 浏览

iphone - 如何获取 NSFetchedResultsController/NSManagedObjectContext 的所有条目?

我有一个很好用的 iphone 应用程序,它可以处理核心数据。如各种教程中所述,我使用 NSFetchedResultsController/NSManagedObjectContext。

现在我想扩展我的应用程序并添加更多功能。我需要用包含我数据信息的对象建立一个数组。

我需要以某种方式获取我在上下文中拥有的所有数据的列表。

我认为我可以采用类似于获取 UITableView 数据的方式的方法。

这个失败了,因为我确实有多个部分。现在我可以浏览所有部分并制作自己的 IndexPath 来访问我的数据:

但我认为还有另一种方法我还没有找到,我希望有人能在这里帮助我。

非常感谢。

0 投票
1 回答
632 浏览

iphone - 核心数据保存到数据库不起作用

我是 iPhone 的第一次 Core Data 用户/学习者,我认为这[managedObjectContext save:$error]是用来保存对 Persistant Store 的更改。

但是当我重新加载并调用 NSFetch 时,对象仍然存在。任何想法为什么?

0 投票
1 回答
304 浏览

objective-c - NSManagedObjectContext CoreData 设备/模拟器的区别

我对 iPhone 开发人员比较陌生,并且一直在尝试构建一个应用程序来了解 CoreData 的工作原理。

我正在尝试实现一些功能,让我能够检测是否有任何东西被持久存储,如果是的话 - 让用户可以选择删除这些对象。

我想知道在设备上而不是模拟器上检索数据时是否需要考虑时间问题。

我使用 XCode 向导创建了一个简单的核心数据应用程序,以使用 UITableViewController 类呈现一些数据。

我的 RootViewController 类中有以下代码片段:

如果我在模拟器上运行此代码(之前已添加到我的商店),我会得到 obj.count 的非零值,但如果我在设备上运行它,即使我之前添加了 obj.count 也始终为零商店。

有什么想法我可能会出错吗?

也许我试图实现的总体方法是不正确的......

0 投票
2 回答
3413 浏览

iphone - 将 managedObjectContext 传递给 UITabBarController 的视图

我有一个基于实用程序模板的应用程序(您可以在其中翻转视图以查看另一个)。在第一个视图中有一个登录屏幕,然后它翻转以显示 UITabBar 风格的界面。

我无法弄清楚如何将 managedObjectContext 从 App Delegate(它的创建位置)一直传递到 Tab Bar 的每个视图。

App Delegate 的 managedObjectContext被传递给FrontLoginViewController,后者被传递给BackViewTabBarViewController .. 下一步在哪里?

BackViewTabBarViewController nib 有一个 UITabBarController,每个选项卡都有一个 UINavigationController。

0 投票
4 回答
464 浏览

iphone - 在 iphone 开发中在对象之间传递数据的最佳方式?

我正在开发一个 iphone 应用程序,但不知道跨视图保存临时数据的最佳方式是什么。例如,我在服务器上有 xml,我将数据解析为一个对象,以便我可以保存信息。xml 有一些我想在一个视图上显示的数据和我想在另一个视图上显示的其他数据。我有一个名为 dataStore 的类,我想在视图中保存数据,最好的 iphone 做法是什么?

我研究了很多选项,我认为它可以在以下选项之间进行选择:

1) 使用 dataStore 作为委托并将数据保存在可以访问的委托中。

2) 将dataStore 用作单例类,并且只允许该类的一个实例并从dataStore 类的共享实例访问数据。

3) 甚至可能是一个我不知道但熟悉通过应用程序上下文和实例传递数据的 android 方式的 NSMangedObjectContext。

如果有人可以帮助我选择哪个是 iphone 上的最佳实践,我将不胜感激。

0 投票
1 回答
1133 浏览

iphone - 保存 NSManagedObjectContext 的实例不会永久保存可变的可转换属性

我使用 Core Data + sqlite 作为数据缓存。应用程序将文件读​​入核心数据,然后使用核心数据运行应用程序。保存到 NSManagedObjectContext 和文件。不过,我注意到,如果我退出应用程序并重新加载它而不重新填充 Core Data 数据库,则使用 -save: 保存的一些(但不是全部)数据不会保存到数据存储中。

对我的托管对象的更改都是在主线程上的一个批次中完成的,在所有更改完成后发送 -save: 消息。未保存的数据是可转换属性,是核心数据对象中唯一的可转换属性。这是保存对象的代码:

中止();没有被调用,所以我假设 -save; 被正确调用。

我怀疑它是否相关,但是在主线程上运行此代码后,我在不同的线程上使用新的 NSManagedObjectContext 执行 NSFetchRequest。在其他线程上没有发生与 Core Data 相关的其他事情。

为什么不保存可转换属性?

0 投票
4 回答
2089 浏览

iphone - 将 UITabBarController 与内部 UINavigationControllers 一起使用时如何共享 ManagedObjectContext

我有一个建筑问题。我的应用程序在应用程序窗口中使用 TabBarController。ApplicationDelegate 创建 managedObjectContext,尽管它实际上并不需要它。

TabBarController 中的每个 ViewController 都是 NavigationViewController。每个 NavigationController 的第一个视图控制器是我的自定义视图。所有都是通过 Interface Builder 创建的链接。

现在,我如何以正确的方式传递 managedObjectContext ?实际上,我需要我的视图尽快加载数据,以便当用户选择选项卡或导航到 NavigationControllers 时,数据已经存在。

所以我的问题是:

  1. 如何正确传递上下文?
  2. 我应该什么时候获取我的数据,即使用哪种方法?“viewDidLoad”还是“viewDidAppear”?

感谢所有的想法!