我正在构建一个项目,我需要使用现有数据预先填充coredata数据库。iOS CoreData - 使用现有索引预填充数据库
我构建了一个解析器来创建iOS模拟器中的sqlite文件,一切正常。 我正在使用一个实体,并且其中一个属性被编入索引。 将我的数据文件解析为核心数据后的性能很好,一切都很好。
我现在用在相同的数据模型,同一指数等项目产生的sqlite的文件(〜200MB)...和首次启动我拷贝过来的数据库文件预填充数据
NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"myproject" ofType:@"sqlite"];
NSString *storePath = [[[self applicationDocumentsDirectory] path] stringByAppendingPathComponent: @"myproject.sqlite"];
NSError *error;
if (![[NSFileManager defaultManager] fileExistsAtPath:storePath])
{
if ([[NSFileManager defaultManager] copyItemAtPath:defaultStorePath toPath:storePath error:&error])
NSLog(@"Copied starting data to %@", storePath);
else
NSLog(@"Error copying default DB to %@ (%@)", storePath, error);
}
复制工作正常,数据可以正常访问。 但是,表现糟透了,索引显然没有被使用。
查看复制操作后的sqlite文件大小,它从200Mb变为120Mb。
模型中的一切都看起来不错,需要索引的内容被检查为索引。
1)复制sqlite时索引数据不会被删除吗?
2)是否有可能以编程方式重建索引?
3)其他想法?
你有没有想过如果你可以编程重建索引?我和你有同样的问题。谢谢! – baselq