In our app, we are implementing sharing of partial Core Data SQLite database through network/email. In order to keep the file size small, I have implemented the below method to shrink the Core Data database.
- (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); } } QUESTION: The above code does shrink the database. But Apple says the implementation details of Core Data are subject to change any time. Do you think I would be safe using this method for foreseeable future? Or is there any other better solution?