gpt4 book ai didi

iphone - 可以将 Core Data 与不同的预填充 sqlite 数据库一起使用吗?

转载 作者:行者123 更新时间:2023-12-03 20:57:27 25 4
gpt4 key购买 nike

我对核心数据不太熟悉,所以我想知道是否可以将不同的预填充 sqlite 数据库加载到核心数据中以及性能如何?

我有一个客户将其数据存储在远程服务器上的多个 SQLite 数据库中。每个 sqlite 数据库基本上代表应用程序中的一个组,并且可能有 10-100 个不同的组,每个组都有自己的小型 sqlite 数据库。所有数据库都具有相同的模式和表结构,可以远程更新,并且一次只能使用一个数据库。

在这种情况下是否可能甚至建议使用核心数据?我可以:

  1. 从远程服务器下载 sqlite 数据库,然后根据需要加载每个数据库,直接使用 sql 访问数据库,
  2. 下载 sqlite 数据库并使用核心数据加载每个数据库并以这种方式使用它?尽管从我读取的核心数据来看,使用一堆专有表等来跟踪数据库,因此即使它们具有相同的架构,也可以交换不同的数据库?

有什么想法吗?谢谢

最佳答案

是的,我现在就这样做。如果需要,我可以给您提供更多示例,但这就是我所做的:

  1. 在 Mac 上通过 sqlite3 创建数据库。
  2. 将数据库放入应用程序包中
  3. 应用启动时,如果数据库不在应用的 Documents 文件夹中,请将其从 bundle 复制到那里
  4. 使用应用程序包中的数据库。

或者,您可以从网络下载,而不是执行步骤 2 和 3 - 但我只会在文件非常大时才执行此操作,并且缺点是在应用程序加载时可能无法立即可用。

应用程序内部DidFinishLaunching:

NSFileManager *fm = [[NSFileManager alloc] init];
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *mapPath = [documentsDirectory stringByAppendingPathComponent: @"datafile.sqlite" ];
if (![fm fileExistsAtPath:mapPath]) {
// Does Not Exist!!
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"datafile" ofType:@"sqlite" inDirectory:@"datafiles"];
NSData *myData = [NSData dataWithContentsOfFile:filePath];
if (myData)
[fm createFileAtPath:mapPath contents:myData attributes:nil];
}

关于iphone - 可以将 Core Data 与不同的预填充 sqlite 数据库一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4027308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com