在我们的应用程序中,我们正在通过网络/电子邮件实现部分Core Data SQLite数据库的共享.为了保持文件小,我已经实现了以下方法来缩小Core Data数据库.
- (void) shrinkDB
{
sqlite3 * database;
NSString * string = [shareStoreURL path];
const char * filename = [string cStringUsingEncoding:[NSString defaultCStringEncoding]];
char *errMsg;
if (sqlite3_open(filename, &database) == SQLITE_OK)
{
NSLog(@"Shrinking...");
if (sqlite3_exec(database, "VACUUM;", NULL, NULL, &errMsg) != SQLITE_OK)
{
NSLog(@"Failed execute VACUUM");
}
sqlite3_close(database);
}
}
Run Code Online (Sandbox Code Playgroud)
问题:上面的代码确实缩小了数据库.但Apple表示Core Data的实施细节随时都可能发生变化.你觉得在可预见的将来我会安全使用这种方法吗?或者还有其他更好的解决方案吗?