问题标签 [mapping-model]

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

iphone - 核心数据迁移失败并出现错误:第一次迁移后无法保存新存储

在过去,我已经成功地实现了从我的数据模型版本 1 到版本 2 的自动迁移。现在,使用 SDK 3.1.3,从版本 2 迁移到版本 3 失败并出现以下错误:

未解决的错误 Error Domain=NSCocoaErrorDomain Code=134110 UserInfo=0x5363360 "操作无法完成。(Cocoa 错误 134110.)", { NSUnderlyingError = Error Domain=NSCocoaErrorDomain Code=256 UserInfo=0x53622b0 "操作无法完成。(Cocoa 错误256.)"; reason = "第一次迁移后保存新存储失败。"; }

我已经尝试使用NSMigratePersistentStoresAutomaticallyOption和进行自动迁移NSInferMappingModelAutomaticallyOption,也尝试使用 only进行迁移NSMigratePersistentStoresAutomaticallyOption,提供从 v2 到 v3 的映射模型。

我看到记录了上述错误,并且应用程序中没有可用的对象。但是,如果我退出应用程序并重新打开它,那么一切都已就绪并且可以正常工作。

我使用的核心数据方法如下

在模拟器中,我看到这会生成一个 MYAPP~.sqlite 文件和一个 MYAPP.sqlite 文件。我试图删除 MYAPP~.sqlite 文件,但是

总是返回 NO。有什么线索吗?难道我做错了什么?先感谢您。

0 投票
2 回答
1351 浏览

core-data - 一对一关系到多对多关系的核心数据迁移

我有一个部署的应用程序,它从传感器(例如,温度°C、压力 kPa)中采样测量值。用户可以创建实验并收集样本。每个样本都存储为一个运行,因此从实验到运行之间存在一对多的关系。出于性能考虑,Run 与 Data 实体(存储实际原始数据的位置)是一对一的关系;这允许加载一些运行属性,而不必加载大量数据。

我们的大多数传感器都有多个测量值,因此最好存储所有实际采样的数据。但这意味着 Run <---> Data 关系需要变成 Run <-->> Data (使用 Xcode 的约定)。

我面临着尝试将数据从旧的 Run to-one Data 模型迁移到新的 Run to-many Data 模型。这可以使用映射模型来完成吗?如果是这样,是否有人对示例有任何指示?如果没有,有没有人有任何关于如何做到这一点的例子的指针?

感谢您的任何指示或建议。

0 投票
1 回答
4174 浏览

iphone - 使用映射模型在核心数据对象模型之间迁移

我有一个相当简单的架构。本质上,运行 <--> 数据(其中运行包含从某种传感器采样的数据,例如温度)。

现在,传感器似乎可以进行不止一种测量(例如,温度和湿度)。因此,一次运行可能有多个数据样本。

因此,运行 <-->> 样本和样本 <--> 数据。(为了简单起见,我暂时将 Run <--> Data 留在原处。)

如果我创建了一个新的映射模型,那么事情通常会起作用 - 除了没有创建新的样本,运行和样本之间以及样本和数据之间没有建立任何关系。

我正在尝试使用映射模型来迁移我的模型,但即使对生成的映射模型进行最轻微的更改也会导致 Cocoa 错误 134110。

例如,如果我采用“Sample”映射(没有 Source)并将其 Source 设置为“Run”(以便我可以适当地设置 Sample 的反向关系“run”),则映射将其名称更改为“RunToSample”。此映射中处理了两种关系:数据和运行。数据属性自动设置为

FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:" , "DataToData", $source.dataSet)

按照此示例,我将运行属性设置为

FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:" , "RunToRun", $source)

同样,我将 RunToRun 中的“示例”属性映射设置为

FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:" , "RunToSample", $source)

和 DataToData 中的“样本”属性

FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:" , "RunToSample", $source.run)

那么,我想知道,出了什么问题?我尝试了各种排列,例如未指定“反向”关系。但是无论如何,我都会继续收到相同的错误(134110)。

我想这比看起来要容易得多,而且我缺少一些基本但次要的部分。我也尝试过继承 NSEntityMigrationPolicy 并覆盖 -createDestinationInstancesForSourceInstance: 但这些努力得到了大致相同的结果。

提前感谢您的任何指示或(相关的:-)建议。

编辑:为简单起见,我已将所有关系标记为可选。虽然,最终,我可能会选择其他方式。

0 投票
1 回答
165 浏览

iphone - 我不能在 Core Data 中使用轻量级迁移进行哪些更改?

我最近尝试了很多不同的轻量级迁移。这些都有效:

1) 重命名属性(指定重命名标识符)

2) 添加属性

3)添加新实体+新属性+反向关系到已经存在的实体

4)删除现有实体+与该实体的关系


= 看起来几乎任何事情都可以用 LM 处理。我错过了什么?在哪些情况下我会遇到麻烦并需要一些更复杂的方法?

0 投票
1 回答
61 浏览

iphone - 使用带有数十个更新的轻量级迁移不会降低性能吗?

我注意到一个想法是,在发布更新时,我可能必须保持整个模型版本堆栈完好无损。我不确定如果有人拥有包含填充数据的 1.0 版,然后立即更新到 5.0 版而没有任何中间版本会发生什么。因此,迁移还必须知道第一个数据模型是什么样的。或者,这甚至根本不起作用。不知道。

但是,经过一些更改后,我有 25 个数据模型,其中最后一个是当前版本。所以我的猜测是,持久存储协调器将有大量工作迭代这些版本并逐步找出差异。这不烂吗?有解决方法吗?

0 投票
1 回答
160 浏览

iphone - iPhoneOS Core Data 迁移:将某些内容从实体移动到文件中

我有一个场景,我将存储在核心数据实体中的 blob 的内容移动到文件中。我需要一种在迁移期间导出该数据的方法,我知道正在转换的实体并将 blob 保存到文件中,将该文件的位置写入转换后的实体的相应属性。

我似乎找不到办法做到这一点。关于三阶段迁移的文档似乎表明可以做什么,但我不确定在哪里定义事物,或者确切定义什么。

0 投票
2 回答
1910 浏览

objective-c - CoreData 自定义映射模型

我在将以下情况从核心数据模型的 v1 映射到 v2 时遇到问题。

在模型的 v1 中,我有一个名为 book 的实体,其属性为 author。在那里我保存了作者的名字和姓氏,甚至还有几位作者的名字和姓氏。我知道非常糟糕的设计,但就是这样。

在模型的 v2 中,我对其进行了改进,并添加了实体作者,其属性为名字和姓氏以及与书的关系。有谁知道我如何以这种方式自定义映射模型,它调用一个函数(返回作者的数量以及分开的名字和姓氏)并创建关于该函数输出的新实体?

谢谢 b00tsy

0 投票
1 回答
2100 浏览

iphone - 核心数据迁移:将字段提取到抽象实体子项

我有一个迁移,我将字段从一个实体移动到另一个实体,该实体是抽象实体的子实体。我的模型有一个实体 ,Thing它是 1->M 到一个抽象实体AbstractWidget,它是 的父级NewStuff。像这样的东西:

我正在将几个属性从 移动ThingNewStuff,并且我一直按照我发现的博客文章中的说明进行操作,其中包含进行类似更改的说明

我创建了一个具有结构更改的新版本,并创建了一个映射模型,其中包含一个名为 ThingToNewThing 的映射,它根据说明映射字段,但不映射关系。我没有改变关系,因为 AbstractWidgets 已经设置为正常工作。

当我运行我的应用程序时,我会收到一整串发送到控制台的内容,开头是这样的:

...其次是似乎是现有数据属性的列表。

我在任何地方都找不到有关 Cocoa 错误 134140 的任何信息,而且我不确定从这里去哪里。

任何指导将不胜感激。

0 投票
1 回答
1225 浏览

core-data - CoreData 在 OSX 框架包中找不到映射模型,但在 iOS 中可以正常工作

我有基于 CoreData 的数据层(使用 SQLite 数据存储),我在 iOS 应用程序和 iOS 客户端与之通信的服务器上都使用它。数据层(objc 代码 + coredata 模型/映射定义)按照惯例编译到 iOS 包中,并编译到框架包中以在 OSX 上使用。

我正在使用映射模型进行默认迁移。

在 iOS 上,它运行良好。添加新数据模型版本后第一次在模拟器中运行应用程序时,它会在您addPersistentStoreWithType:configuration:...按照标准 Apple 文档调用时迁移所有数据。

在 OSX/PyObjC 上,它以 . 失败Persistent store migration failed, missing mapping model,即由于某种原因,即使存在该包,也无法在该包中找到映射模型 .cdm 文件。

如果您通过在包中查找它们来手动指定源/目标/映射模型,然后通过 NSMigrationManager 手动调用迁移,则一切正常,例如

在这一点上,我不知道为什么 iOS 版本能够找到映射模型以成功迁移数据存储,但 OSX / PyObjC 版本却不能,尽管包中明确包含映射模型,并且映射模型显然是有效的因为它在您手动调用它时起作用。

任何有关 CoreData 如何在捆绑包中搜索有效/适当的映射模型的见解,这可能有助于确定如何在 OSX 上进行这项工作,我们将不胜感激。

0 投票
1 回答
7320 浏览

iphone - Core Data轻量级迁移:找不到或自动推断迁移的映射模型

因此,我创建了一个新版本的数据模型,并将以前的可选字段设为非可选(给它一个默认值)。根据文档,这应该意味着我的迁移符合轻量级自动迁移的条件。

我还根据文档添加了允许在打开商店时执行此操作的选项:

但是,当我的应用程序启动时,我收到以下错误:

“无法找到或自动推断迁移的映射模型”。

有谁知道这里可能是什么问题?任何帮助表示赞赏...谢谢!