问题标签 [uimanageddocument]

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 回答
1539 浏览

objective-c - 覆盖 UIManagedDocument 中的 managedObjectModel

我正在使用 iOS 5.0 中的新 UIDocument 功能。我有一个使用多个不同数据模型(momd 文件)的现有应用程序。根据 UIManagedDocument 的文档,您可以覆盖 -(NSManagedObjectModel*)managedObjectModel 以加载特定的数据模型(默认是加载所有找到的合并在一起的数据模型)。两种数据模型都有重叠的模型名称和不同的模式,所以这在我的情况下是不可取的。

相关苹果文档

因此,我在一个简单示例中遇到的问题是我可以覆盖该函数,但我无法分配它的结果。它都是私有的,所以_managedObjectModel 不能被子类访问;而且,它是只读的,因此无法分配 self.managedObjectModel ..

我寻找了一个覆盖 managedObjectModel 的 UIManagedDocument 示例,但 Apple 似乎没有提供。

我也许可以定义一个新的实例变量 _myManagedObjectModel 并分配它。然后在我覆盖的访问器上返回它。我担心的是,这可能会破坏 UIManagedDocument 的一些内部实现,它不使用 managedObjectModel 访问器而不是 _managedObjectModel (这在苹果的实现中经常看到......)

似乎是一个直截了当的问题,我怀疑我只是错过了一些非常简单的东西来允许适当的覆盖。

标题:

0 投票
3 回答
3361 浏览

objective-c - UIManagedDocument 不保存

我正在使用 UIManagedDocument 来管理我的数据。我创建模型并使用它,一切似乎都在工作,但我的更改并没有被写回 SQLite 存储。

UIManagedDocument 的文档说自动保存应该负责将数据持久化到数据库中,但这似乎没有发生。

这会获取我想要添加的对象(并成功)。

这会将项目添加到另一个对象的项目集合中,然后告诉文档我已完成更改。

我预计在此之后不久会看到写入核心数据存储的更改,但是在 Instruments 中观察,我发现它永远不会发生。

items 集合是一个 NSOrderedSet,并且由于对此项目的评论:

NSOrderedSet 生成的访问器中抛出的异常

我添加了一个 addItemsObject: 到包含集合的对象:

也许 Core Data 被告知项目集合已更改出现问题,但我不知道如何。

0 投票
2 回答
1547 浏览

core-data - UIManagedDocument 迁移数据模型

我正在开发一个使用 iCloud 的子类UIManagedDocument并将其文档存储在 iCloud 上的 iPhone 应用程序。

在我改变我的核心数据模型/方案(添加一个新的模型版本 - 就像我在过去几周里做过几次一样)之前,一切都很好。我添加了一个新属性并更改了现有属性之一的数据类型。

现在,当我运行我的应用程序时,我似乎无法使用UIManagedDocument's加载我的文档-openWithCompletionHandler:。我可以创建新文档并读/写它们。如果我将数据模型版本改回 1,那么我可以阅读现有文档,但不能阅读新文档。

据我了解,我只对数据模型进行轻量级迁移,并且UIManagedDocument应该处理它吗?

任何建议将不胜感激!

0 投票
2 回答
9585 浏览

iphone - UIManagedDocument 示例/教程

我一直在尝试创建一个简单的UIManagedDocument库样式应用程序(将单独的文档保存到 iCloud),但没有成功。

我对以下内容感到困惑:

我是子类UIManagedDocument化并在这个子类中设置persistentStoreCoordinator, ManagedObjectModel& ManagedObjectContext,还是应该在这个子类中配置这些AppDelegate(如果是的话,我该如何去刷新persistentStoreCoordinator以查看新文件 - 似乎一旦读取persistentStore了我无法让它读取新的持久存储)?

0 投票
5 回答
1584 浏览

ios - 在 iOS 5.0 模拟器中使用 UIManagedDocument 时出现 NSFileCoordinator 错误

我在 iOS 5.0 中使用 UIManagedDocument,在模拟器上运行应用程序,在 OSX 10.6 下使用 XCode 4.2。有问题的代码如下所示:

运行标记的行会在日志中创建以下消息:

发送消息后,UIManagedDocument 可能工作也可能不工作——我还没有找到决定这一点的情况。

我很确定代码是正确的,因为它实际上是斯坦福 CS193p 课程中的代码示例之一。整个示例可以在他们的网站上下载 http://www.stanford.edu/class/cs193p/cgi-bin/drupal/ 直接链接到代码: http: //www.stanford.edu/class/cs193p/ cgi-bin/drupal/system/files/sample_code/Photomania_0.zip

此外,代码在设备本身上运行良好,不会产生“令人惊讶”的消息,并且运行之后的所有代码都很好。

我在谷歌上没有找到任何东西,在 Apple 开发者页面上也没有。重新启动模拟器或 XCode,或重新安装它们都不会改变行为。

有任何想法吗?

0 投票
1 回答
763 浏览

objective-c - 如何将现有的非文档核心数据存储转换为 uimanageddocument?

如何将数据从现有的非文档核心数据存储导入到 uimanageddocument?

问题是如何从旧的 managedObjectContext 复制到新的。

0 投票
1 回答
622 浏览

iphone - UIManagedDocument 和 NSFetchedResultsController

我在使用 UIManagedDocument 保存实体时遇到问题。我有一个 NSFetchedResultsController 其上下文设置为 UIManagedDocuments 上下文。我的控制器设置了部分。用户向 UIManagedDocuments 上下文添加一个条目,我使用以下命令保存上下文:[context save:&error]; 并且我的 NSFetchedResultsController 正确更新。

如果我离开具有 NSFetchedResultsController 的视图,然后返回到视图,在该视图中创建一个具有相同 UIManagedDocuments 上下文的新 NSFetchedResultsController,当我调用时会收到错误消息: [fetchedResultsController performFetch:&error];

错误说:

CoreData:错误:(NSFetchedResultsController)索引处获取的对象有一个乱序部分名称'。对象必须按部分名称排序'

并且获取失败。

如果我在返回视图之前等待一段时间,我不会收到错误消息。我知道保存操作是在子上下文中完成的,然后将更改推送到父上下文中,我认为这与问题有关。有没有人有办法解决吗?

0 投票
1 回答
5493 浏览

core-data - 你如何处理 UIManagedDocument?

首先,我应该提到这是我在这个网站上的第一篇文章。我正在尝试自学 iOS 编程,并且在我的谷歌搜索中我发现我经常被引导到这里。所以感谢所有在这里做出贡献的人。你已经帮了我很多忙了。

我一直在学习斯坦福 CS193P 课程并且喜欢它。但我现在被困住了,不知道该去哪里。

我的问题是 UIManagedDocument。

我厌倦了制作一个简单的应用程序来测试我的新技能。这就是它的作用:

一个简单的会计应用程序,用于跟踪个人对筹款活动的贡献。

我有一个 UITabBar,每个选项卡上都允许您: 1. 跟踪参与者(玩家) - 这将连接到地址簿并允许您添加它们或将它们保留在此应用程序中。2. 管理事件(事件) - 您可以添加、编辑或删除事件,然后将参与者添加到该事件中,然后能够添加他们在该事件中带来的(银行)。3.设置。- 我添加了一些按钮来帮助我现在解决问题,包括一个清除所有数据的重置按钮和一个“虚拟数据”按钮。

我有三个 coreData 实体。Players、Events 和 Bank 都与其他两个有关系。

当我第一次尝试制作这个应用程序(iOS5 之前)时,我使用 appDelegate 创建了我的 ManagedObjectContext 并将它传递给我的 viewControllers。那行得通。但现在我应该使用 UIManagedObjectDocument 而不是 AppDelegate。我相信我了解原理和与 iCloud 的集成。(我可能是错的)

使用该课程中的示例以及我可以在网上找到的内容,我创建了一个帮助程序类,它将在我的 UINavigationControllers 中提供我的每个 ViewControllers 中的第一个 ManagedDocument。

然后我让第一个 ViewController 打开文档并执行获取。

从那里我通过 segue 将选择的任何 NSManagedObject 传递给下一个 ViewController。

问题是当我开始添加或重置数据时。(我假设如果我可以让它与“虚拟数据”按钮一起工作,我可以让它在单个条目上工作)当我按下“重置”或“虚拟”按钮时,我的日志告诉我它是推送,但在我重新启动应用程序之前,我看不到数据有任何变化。然后它完美地显示出来。我的猜测是我没有正确保存文件或者我没有正确刷新 tableViews。我在使用 NSNotification 方面做了一个小小的尝试,但没有深入研究它,因为我无法让它响应任何东西。如果需要,我很乐意回到那条路。

这是我的保存方法...几乎只是从默认的 coreData appDelegate 复制而来。

CS193P 的讲师 Paul 在作业 6 中建议使用辅助方法通过块传递 UIManagedDocument。我得到了积木背后的理论,但还没有完全理解它们,所以我不排除我的答案也可能在那里。

非常感谢您提供的任何帮助或为我指明正确的方向以进行更多研究。抱歉这篇文章太长了,我尽量说清楚。

0 投票
1 回答
831 浏览

iphone - 核心数据:UIManagedDocument 与 AppDelegate 的 managedObjectContext @property

有两种方法可以获取我知道的 NSManagedObjectContext:

  1. 创建一个 UIManagedDocument 并询问其托管对象上下文

  2. 访问 AppDelegate 的 managedObjectContext @property。

这里有什么取舍?我一直在使用 UIManagedDocument 方式,但我似乎无法在任何地方找到关于何时/为什么选择一个而不是另一个的解释。任何澄清将不胜感激!

0 投票
2 回答
480 浏览

iphone - UIManagedDocument - 验证核心数据实体

我有一个使用 Core Data 的应用程序,它通过使用 UIManagedObject 获取它的 ManagedObjectContext。从阅读中,我看到我不应该直接保存上下文 - 而我应该依赖 UIManagedObject 的自动保存或使用 saveToURL:... 我的问题是我想验证存储在我的实体中的数据。我对实体有约束,指定字符串属性的最小长度为 1。但是,我可以创建一个新对象,为其属性分配空字符串,然后保存文件。在 saveToURL:... 的完成处理程序中,它始终具有真正的成功值。然后,我为我的实体的 name 属性创建了自己的验证器。我使用了 Core Data Programming Guide 中的示例代码 -

当它运行时,我看到 ioValue 的长度为 0 并且它返回 NO,但是我的完成处理程序永远不会被调用。任何帮助都会很棒。

关于如何使用 UIManagedDocument 处理保存错误,我是否缺少一些东西 - 特别是如何通知调用代码在保存其信息时发生了错误。