2011-03-15 39 views
1

我试图在表中使用预先生成的包含10000个对象的sqlite文件。优化使用coredata访问sqlite的时间

我已经在使用coredata的sqlite中用iPhone模拟器创建并添加了对象。

我已经复制并将iPhone Simulator资源文件夹(包含10000个对象)中包含的sqlite复制到我的项目目录中的资源文件夹中。

我首次启动我的应用程序做的,就是用这个生成的数据库复制到我的应用程序的文件目录的iphone:

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(在我的设备上创建并填充相同的10000个对象)与新副本,所有表上的访问时间比正常生成的MyBase.sqlite多3倍。

我不知道在模拟器上生成sqlite时,索引属性是否不存在? 我需要帮助!

+0

您是否检查了您访问的对象属性的索引复选框? – Dan 2011-03-15 12:35:02

回答

0

您使用相当常见的技术,通常不会引起任何问题。如果两个商店使用相同的数据模型,核心数据无法区分刚创建的商店和旧商店。

我能想到的唯一解释是您使用两个不同的系统/ API版本,以使存储文件略微不同。如果设备上的版本比模拟器上的版本更旧/更新,则可能会出现问题。

这只是一个疯狂的猜测。