我正在構建一個項目,我需要使用現有數據預先填充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