【问题标题】:What is the fastest way to pre-populate an app with data? [closed]用数据预填充应用程序的最快方法是什么? [关闭]
【发布时间】:2013-06-04 04:44:07
【问题描述】:

我正在创建一个应用程序,其中会预先存储大量信息。

最好使用 plist 存储数据,还是使用 SQLite 存储 Core Data?在应用程序中预填充数据的最快方法是什么?

为了让您了解我将要使用的数据类型,您可以考虑存储电影信息。我实际上不会存储电影,但我存储的数据在结构上可能相似:一部电影可以有多个演员,一个演员可以在多部电影中播放。基本上,我的数据中存在多对多的关系。

【问题讨论】:

  • 如果实体之间有关系,那么最好使用核心数据。 importing data to core data的一个很好的教程
  • 我还在考虑 Parse 来存储数据,这将使我能够根据需要更新数据。我唯一担心的是它将成为一个免费的应用程序,如果它变得流行,我不想最大化我的 Parse 帐户。我是否应该对此感到担忧并且 Parse 是一个不错的选择(对我来说似乎是)。 :-)
  • 我不太确定哪种方式最快。我一直使用 Core Data 和 MagicalRecord(Core Data 的包装器),它提供了一些非常简单的从 json/plist 等数据导入。如果您的应用程序有静态数据,您可能可以使用预加载。如果您发现会有更改,请创建一个数据管理器或其他东西来检查版本并更新预加载的数据。
  • 我的问题被改写为与最初提出的不同,然后被其他成员关闭,因为这不是一个好问题。这是怎么回事?
  • 如果你能证明它的合理性,我可以投票重新打开它吗?

标签: ios datastore


【解决方案1】:

如果您希望能够从一个完整的数据库开始,最快的方法是创建一个已包含所有数据的持久存储文件并将其添加到您的应用程序包中。当应用程序首次启动时,您可以在设置 NSPersistentStoreCoordinator 之前将文件从捆绑包复制到文档目录并开始使用它:

NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"database.sqlite"];
if(![fileManager fileExistsAtPath:[storeURL path]]) {
  NSURL *template = [NSURL fileURLWithPath:[NSBundle pathForResource:@"start-database" ofType:@"sqlite" inDirectory:nil]];
  [fileManager copyItemAtURL: toURL:storeUrl error:nil];
}

之后继续正常设置您的NSPersistentStoreCoordinator

您可以通过自己运行应用程序、添加所有项目、保存上下文然后退出应用程序来预先填充数据库。之后复制创建的 sqlite 数据库文件并添加到应用程序的资源中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 2021-05-12
    • 2020-01-17
    相关资源
    最近更新 更多