【问题标题】:Import exisiting data into CoreData将现有数据导入核心数据
【发布时间】:2011-05-25 15:51:33
【问题描述】:

我有一个现有的数据库 (SQL Server),它有几个使用主/外键关系连接的表。该数据库包含数据并用于填充网站。

我现在想使用 CoreData 在 Mac/iOS 应用程序中使用这些数据,并创建了 Apple(以及网上许多其他人)指定的数据模型和关系。我有一个简单的服务可以从远程系统中提取数据,但现在我正在努力了解如何使用我的 CoreData 模型将这些数据持久保存在设备上。

由于 CoreData 是一个对象图而不是数据库,我不知道如何保留我的主键/外键关系,因为这是从开发人员那里抽象出来的 CoreData 实现细节。我在远程系统中拥有的数据依赖于这些已经形成的关系才能正常运行。

有没有人知道如何解决这个问题或者以前遇到过这个问题?还是我从错误的角度来看这个?

无论哪种方式,我都需要某种方式将我的远程数据复制到 Mac/iOS 设备上。

非常感谢。

【问题讨论】:

    标签: iphone cocoa ipad core-data


    【解决方案1】:

    外键是 Core Data 中的关系。要传输数据库,您需要通读每一行并在 Core Data 中创建一个新实体。要重新创建关系,您也可以在其中存储旧的 id 数据,然后在 Core Data 中查询具有该 id 的实体,并创建关系。如果只需要传输一次,可以在导入完成后删除id。

    【讨论】:

    • 这就是我的想法。无法理解我的 CoreData 实体将与数据库建立关系和 FK。然后,这将转换为我的实体模型类,该类具有 NSManagedObject(CoreData 关系)的属性和 INT 类型的属性以保存数据库中的 FK。因此,为什么我想知道这是否是正确的方法,还有其他人做过这样的事情(不敢相信我是第一个!)。即用户有一个地址,因此我的用户实体模型类将具有地址实体 (NSMangedObject) 和 AddressId (int) 的属性。
    • 我认为您的用户实体将具有指向地址实体的关系。 Address 实体将具有 addressId 属性,该属性最初来自数据库。您将首先填写核心数据地址(这样您就可以让用户指向某些内容)。添加用户时,找到与数据库用户对应的addressId的地址。然后将 User 关系设置为您找到的 Address 实体。
    • 如果这个方法看起来很难,你可以尝试直接插入Core Data sqlite数据库。通常不建议这样做,但本教程会告诉您如何操作。 raywenderlich.com/980/…
    • 谢谢 Nevan,非常感谢我会接受你的第一个答案,因为这似乎是直接注入 sqlite 的方式,尽管可以做到这一点肯定会让我在凌晨寻找错误: )
    猜你喜欢
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    相关资源
    最近更新 更多