可能使用不同的预填充sqlite数据库的核心数据?
问题描述:
我对核心数据并不熟悉,所以我想知道是否有可能将不同的预填充sqlite数据库加载到核心数据以及性能如何?可能使用不同的预填充sqlite数据库的核心数据?
我有一个客户端将数据存储在远程服务器上的多个sqlite数据库中。每个sqlite数据库将基本上代表应用程序中的一个组,并且可能有10到100个不同的组,每个组都有自己的小型sqlite数据库。所有数据库都有相同的模式和表结构,可以远程更新,一次只能使用一个数据库。
在这种情况下使用核心数据有可能甚至是可取的吗?我既可以:
- 从远程服务器下载的源码分贝,然后根据需要直接访问分贝使用SQL或加载每个分贝,
- 下载SQLite的分贝,并使用核心数据加载每个db和工作这样呢?虽然从我读过的核心数据使用一堆专有的表格等来跟踪数据库,所以不可能只交换不同的数据库,即使它们具有相同的模式?
任何想法? thx
答
是的,我现在就这样做。如果需要,我可以给你更多的例子,但这里是我做的:
- 在Mac上通过sqlite3创建数据库。
- 将在应用程序的包
- 在应用程序启动数据库,如果数据库不在应用程序的文档文件夹,从包复制到那里
- 从应用程序的包中使用该数据库。
或者,您可以从网上下载,而不是执行第2步和第3步 - 但我只会在非常大的情况下执行此操作,并且在应用程序加载时可能不会立即可用。
内的applicationDidFinishLaunching:
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];
}
答
在过去的几个星期我和我的同事都在讨论的预填充服务器上的CoreData店的最佳途径。我们发现Objective-C web框架Bombax和 想要尽快尝试。
这个想法是,Bombax服务器可以使用所有可用的框架,包括CoreData。
不足之处:服务器必须是一个mac。
听起来很有趣,会检查出来。 – James 2010-10-27 17:08:10
不要犹豫,投票 – vikingosegundo 2010-10-27 17:11:48