问题标签 [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 投票
0 回答
1045 浏览

core-data - 核心数据和 UIManagedDocument:无法合并具有两个不同实体的模型

编辑

我在这里转发了这个:Xcode 4.3 中的核心数据和 UIManagedDocument:无法合并模型

我设法得到一个不同的错误来显示。

编辑结束

所以我正在制作一个使用共享的核心数据应用程序UIManagedDocument。我UIManagedDocument使用辅助类访问它DocumentHandler。希望我能够在另一个班级中像这样使用它viewWillAppear

`

'

使用文档中的上下文,我创建了 NSManagedObjects(标准核心数据,对吧?)。问题是我在运行应用程序时收到此错误:

“无法合并具有两个不同实体的模型”

我对这个 DocumentHandler 感到头疼,我希望这是一个简单的解决方法,我太愚蠢/没有经验,看不到。

我没有制作单独版本的数据模型或任何东西,我也没有尝试迁移任何东西。我只想第一次运行这个应用程序!

谢谢阅读。

0 投票
1 回答
1042 浏览

core-data - Xcode 4.3 中的核心数据和 UIManagedDocument:无法合并模型

我要感谢所有为本网站做出贡献的人。我是一个编程菜鸟,你们都帮了我很多忙。话虽如此,让我们继续我的最新问题!

我正在创建一个使用 aUIManagedDocument为我存储核心数据模型的应用程序。我使用UIManagedDocument以下代码创建,但现在使用 Xcode 4.3.2(随 Mac App Store 更新的版本)我遇到了问题。

这是代码:

我在控制台中收到如下错误:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无法将模型与名为“Foo”的两个不同实体合并

事情就是这样,我不想让版本或类似的东西起作用。我只是用两种类型的实体创建一个数据模型,并试图在我的应用程序中打开一个 UIManagedDocument:超级简单,对吧?

我已经卸载了 Xcode 并重新安装了它,但没有成功。我还删除了我的核心数据模型并从头开始重做,但没有运气。

我完全迷失了,已经花了大约 2 个晚上试图解决这个问题。

帮我!请!谢谢阅读。如果您需要更多信息,请告诉我。我会给你我的灵魂的答案...

0 投票
2 回答
728 浏览

ios - 创建 UIManagedDocument 和初始 iCloud 同步

我正在将 iCloud 同步添加到我的应用程序中。我的UIManagedDocument商店在沙箱中,它的更改日志在 iCloud 中(由 指定NSPersistentStoreUbiquitousContentURLKey)。问题是,当我在第二台设备上第一次安装和运行该应用程序时,初始同步需要几分钟时间(以提取第一台设备创建的更新)。这是一个真正的问题,因为同步显然发生在UIManagedDocument:saveToURL:completionHandler. 所以完成处理程序块需要很长时间才能被调用,如果我访问我的UIManagedDocument之前UIManagedDocument:saveToURL返回,我可以理解的是崩溃。

我想快速打开数据库,然后在后台进行同步。我该怎么做?

0 投票
2 回答
233 浏览

ios5 - UIManagedDocument 不会立即更新关系的更改

我在我的项目中使用 UIManagedDocument 并且必须更改现有对象的关系。

所有对象都已存在于数据库中,因此我不处理temporaryID/permanentID 问题。我也几乎updateChangeCount:在我的 UIManagedDocument 上使用来保存更改。所以它不应该是 UIManagedDocument 的常见嫌疑人的问题。

模型:

手术:

通过调用将 aDepartment从一个移动到另一个。Company[aDepartment setCompany:newCompany]

情况1(成功):

Department对实体调用执行 fetchRequestcompany = newCompany会返回预期结果。

情况2(失败):

Employee对实体调用执行 fetchRequestdepartment.company = newCompany不会返回任何结果。

情况 2 仅在 UIManagedDocument 自动保存后成功。

任何想法如何解决这个问题?

0 投票
2 回答
2473 浏览

objective-c - UIManagedDocument 在后台线程中插入对象

这是我在 Stack Overflow 上的第一个问题,如果我违反了任何礼仪,请见谅。我对 Objective-C/app 创建也很陌生。

我一直在关注 CS193P 斯坦福课程,特别是 CoreData 讲座/演示。在 Paul Hegarty 的 Photomania 应用程序中,他从表格视图开始,并在后台填充数据,而不会中断 UI 流程。我一直在创建一个列出本地企业的应用程序(来自返回 JSON 数据的 api)。

我根据保罗的照片/摄影师课程创建了类别。类本身的创建不是问题,而是它们被创建的地方。

我的应用程序从带有几个按钮的 UIViewController 开始,每个按钮都为相应的部分打开一个表格视图(这些都工作正常,我试图提供足够的信息,以便我的问题有意义)。我调用一个辅助方法来创建/打开 UIManagedDocument 的 URL,它基于这个问题。一旦应用程序运行,它就会被调用,并且加载速度很快。

我有一个非常类似于 Paul 的 fetchFlickrDataIntoDocument 的方法:

[myFunctions arrayOfBusinesses] 只是解析 JSON 数据并返回一个包含各个业务的 NSArray。

我在业务创建代码的开始和结束时使用 NSLog 运行代码。每个业务都分配一个版块,创建时间为 0.006 秒,其中有数百个。插入最终需要大约 2 秒。

辅助方法在这里:

并在 viewDidLoad 中调用:

useDocument 只是将 self.document 设置为提供的文档。

我想更改此代码,以便将数据插入另一个线程,并且用户仍然可以单击按钮查看部分,而数据导入不会挂起 UI。

任何帮助将不胜感激我已经在这个问题上工作了几天但无法解决它,即使这里有其他类似的问题。如果您需要任何其他信息,请告诉我!

谢谢

编辑:

到目前为止,这个问题已经收到一票反对票。如果有办法我可以改进这个问题,或者有人知道我无法找到的问题,你能否评论一下如何或在哪里?如果还有其他原因您拒绝投票,请告诉我,因为我无法理解消极情绪,并且很想学习如何做出更好的贡献。

0 投票
1 回答
194 浏览

objective-c - 获取 UIManagedDocument 的 URL

目前,我确定文档目录并检索其中的 URL,保存到数组属性:

当我随后想要 UIMangedDocument 的 URL 时,我引用了该数组。但我怀疑 UIManagedDocument 已经知道它的 URL。我发现与此最接近的是persistentStoreName,但这是一种用于设置持久存储名称的方法。任何指导表示赞赏。

0 投票
2 回答
350 浏览

objective-c - 在 NSManagedObjectContext 后台线程中解析和“不同上下文”的问题

我正在尝试解析 XML 文档并将其数据存储在使用后台队列的核心数据存储中。我正在使用 iOS 5 中引入的新的嵌套 UIManagedObjectContext 概念。

我为我的 NSManagedObject 公司添加了一个新类别,该类别处理公司特定数据的解析:

这就是我调用此方法的方式:[company parseAttributesFrom:xmlStr inManagedObjectContext:self.managedDocument.managedObjectContext]; 请注意,我的问题没有改变,即使我将托管对象上下文作为参数传递给该方法。

当我运行代码时,它会在我设置公司的年度期间崩溃,并显示错误消息 NSInvalidArgumentException: 'Illegal attempt to establish a relationship 'company' between objects in different contexts (source = <IBEstPeriod: ...

当代码以相同的背景思想运行时,我很难理解为什么错误应该与不同的上下文相关。我将不胜感激任何帮助!!

0 投票
3 回答
2186 浏览

objective-c - 带有 NSFetchedResultsController 和背景上下文的 UIManagedDocument

我正在尝试使以下工作。

我有一个表格视图,它在表格视图中显示从 API 获取的数据。为此,我正在使用 NSFetchedResultsController:

我在这样的背景上下文中创建我的实体:

现在,每当我获得新数据(以及如上所示的插入/更新实体)时,我的 NSFetchedResultsController 就无法正常工作。特别是,我总是更新一个实体(而不是创建一个新实体),但我的表格视图显示了两个实体。一旦我重新启动应用程序,它就会正确显示。

如果我在 self.database.managedObjectContext 中创建实体([MyAPI createEntities]),一切正常。

知道我做错了什么吗?浏览 SO 上的现有线程让我认为我的做法是正确的。同样,如果我不在后台上下文中保存核心数据(但在 document.managedObjectContext 上),那么它可以正常工作......

0 投票
1 回答
237 浏览

core-data - 使用 CoreData 保存/加载游戏的系统

我一直在尝试使用 Core Data 为游戏构建一个简单的加载/保存系统。

保存、加载和创建我的 UIManagedDocument 工作正常。在我的存档游戏实体中设置和加载属性值也可以正常工作。

问题是当我的应用退出时这些值会丢失,因为我不知道如何访问它们。

我的存档实体中有大约 200 个属性,例如 (NSNumber *)currentIncomeNSNumber *currentMoney, NSNumber *currentMonth等。看起来很简单,对吧?如果我将这些属性分组为具有关系的属性,我最终可能会得到大约 20 个属性。根据我从核心数据编程指南中收集到的内容,为了使用保存的 UIManagedDocument 中的值填充实体,我需要使用填充结果数组的谓词执行 fetchrequest。

这是我的第一个问题出现的地方:我是否需要为每个属性执行 fetchrequest?如果您只有几个属性或者如果您有“多”关系,这似乎很有用。就我而言,这似乎非常乏味。

我可能在这里遗漏了一些非常重要的东西,但我需要类似的东西,但我load my UIManagedDocument and automatically fill my NSManagedModel with the one that was saved in the document's context找不到。

这就是我的第二个问题出现的地方:CoreData 和 UIManagedDocument 甚至是正确的方法吗?200 个变量对于 NSUserDefaults 来说太多了——不过我可以想象使用 NSCoding。我肯定想在以后合并 iCloud 存档游戏共享,而 UIManagedDocument 和 CoreData 似乎非常适合这一点。


已解决:我刚刚重写了整个 Core Data 获取代码(20 行到 10 行左右)。对没有谓词的实体执行 fetchrequest 显然会返回整个实体。如果我的(NSArray *)fetchedResults 出现 nil(数据库为空),我将我的 savegame 实体的一个新实例插入到我的 managedobjectcontext 中。如果它出现非零,我只做 a(NSManagedObject *)saveGame = [fetchedResults lastObject]并且每个值都可以正常加载。

0 投票
1 回答
1502 浏览

ios - UIManagedDocument:如何在后台执行保存

我有一个连接到 NSFetchedResultsController 的表视图,对应的 managedObjectContext 是 self.myDatabase.managedObjectContext:

现在,每当用户刷新页面时,我都会执行以下代码。本质上,我创建了一个新线程来加载数据,然后在 MOC 安全线程上更新/保存新数据:

这很好用:我得到了更新,并且表格视图正确显示了所有内容。唯一的问题是 UI 没有响应,大概是因为我在主线程上进行了保存/更新。所以我研究了在后台线程上执行这个修改:

然而,虽然 UI 现在可以响应了,但我在表格视图中遇到了很多麻烦:表格没有更新现有条目,而是显示了一个额外的条目(不应该存在的重复项)。我认为这可能是因为这两个上下文没有同步/合并,但是通过阅读以前的 SO 帖子,我被引导相信我只需要在 backgroundContext 上调用 save ,然后在主 MOC 上调用 updateChangeCount 。如果我重新启动应用程序,一切都会再次正常 - 直到我再次刷新。

有没有人可以帮忙。我真的开始拔头发了。

如果你能解开这个谜,我会给你啤酒。