创建 SwiftData 数据库以预加载应用程序

问题描述 投票:0回答:1

我正在创建一个应用程序,我想为其预填充部分数据库。我不想读取大量 SwiftData 对象或从 JSON 文件创建一堆对象并在第一次应用程序加载时将其加载到数据库中,因为这会花费大量时间并且无法提供出色的用户体验。

我遇到了一些解决方案,其中这个似乎可以满足我的要求: https://www.hackingwithswift.com/quick-start/swiftdata/how-to-pre-populate-an-app-with-an-existing-swiftdata-database

它描述了一种创建应用程序的方法,您可以在核心数据中复制数据库结构,以便创建与您的应用程序匹配并允许预填充的数据库文件。

然而,这似乎是一个可笑的麻烦。我的数据库结构非常复杂并且有很多连接的对象。我不想在核心数据文件中重新创建所有这些,更不用说围绕它创建整个项目只是为了能够创建数据存储。

SwiftData 真的没有更好的替代方案吗?似乎缺少这样的标准功能,或者我这里只是有一个边缘情况?

sqlite core-data swiftdata preloading
1个回答
0
投票

基于我的评论和https://stackoverflow.com/a/75380534/719690

  1. 使用现有代码创建数据存储(使用 iOS 模拟器或使用您自己的内部 Mac 实用程序。

  2. 退出用于构建数据存储的程序。

  3. 找到您刚刚创建的

    .sqlite
    文件。打开它:
    sqlite <filename>

  4. 在 SQLite 中:

  PRAGMA journal_mode = off;
  VACUUM;
  PRAGMA journal_mode = on;
  control-D to exit

这应该会给你一个没有 WAL 或 SHM 的

.sqlite
文件。

© www.soinside.com 2019 - 2024. All rights reserved.