Ste*_*abs 4 sqlite xcode core-data
我的应用程序目前有这个sqlite文件(让我们命名为v1)我想要做的是,当我激活IBAction时,它会自动删除当前文件(v1)并从webservice中检索值并存储在新文件中(v2)然后应用程序将使用新的sqlite文件(v2)
关于如何实施的任何想法?
我目前的代码在这里:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator != nil) {
return persistentStoreCoordinator;
}
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"test.sqlite"]];
NSLog(@"%@",storeUrl);
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return persistentStoreCoordinator;
Run Code Online (Sandbox Code Playgroud)
}
您可以:
但是这种方法非常危险,因为您必须确保应用程序中的每个Core Data对象都可以重置.此外,更换数据库应该在重置上下文后发生,以避免竞争条件.如果你有线程/块访问Core Data,那就更难了.
更好的方法可能是通过下载包含新数据库内容的JSON文件来更新数据库记录,删除旧记录并插入新记录.这还可以确保您可以在未来版本的应用程序中更新Core Data架构,而不会破坏内容更新过程.通过使用NSFetchResultsController该类,您的表视图或其他UI元素甚至可以在数据库更新时使用漂亮的动画自动更新.
如果你关心带宽,我使用的协议缓冲区比任何JSON甚至sqlite文件都要紧凑,而且非常容易使用.
| 归档时间: |
|
| 查看次数: |
2034 次 |
| 最近记录: |