我正在尝试在表中使用包含10 000个对象的预生成的sqlite文件。
我使用coredata在sqlite中创建并添加了使用iPhone模拟器的对象。
我将iPhone Simulator ressource文件夹(包含10 000个对象)中包含的sqlite复制并复制到项目目录中的ressource文件夹中。
首次启动我的应用程序时,我使用以下方法将生成的数据库复制到iphone上的app文档目录中:
NSBundle * mainBundle = [NSBundle mainBundle];
NSString *oldPath = [mainBundle pathForResource:@"MyBase" ofType:@"sqlite"];
NSString *newPath = [[app_delegate applicationDocumentsDirectory] stringByAppendingPathComponent: @"MyBase.sqlite"];
BOOL copied = [[NSFileManager defaultManager] copyItemAtPath:oldPath toPath:newPath error:&error];
if (!copied) {
NSLog(@"Moving database from %@ to %@, error: %@", oldPath, newPath, error);
}
它工作正常,但我有以下问题: 使用新副本比较对原始MyBase.sqlite(在我的设备上创建并填充相同的10 000个对象)的访问权限,对表的所有访问所花费的时间比正常生成的MyBase.sqlite多3倍。
我想知道在模拟器上生成sqlite时,索引属性是否不存在? 我需要帮助!
答案 0 :(得分:0)
您使用相当常见的技术,通常不会导致任何问题。如果两个商店使用相同的数据模型,Core Data无法区分刚创建的商店和旧商店。
我能想到的唯一解释是你正在使用两个不同的系统/ API版本,这样商店文件就会略有不同。如果设备上的版本比模拟器上的版本旧/更新,则可能会出现问题。
这只是一个疯狂的猜测。