【发布时间】:2014-07-20 09:01:47
【问题描述】:
在我的 ios 应用程序中,我使用的是 Magical Record 和 NSFetchedResultsController。我正在尝试实现以下功能:
- 用户导航到设置屏幕
- 他选择 - '删除帐户'
- 他的所有数据都被删除了
- 他被导航到重新注册屏幕
要删除他所有的数据,我写在下面的代码:
- (void)cleanAndResetupDB
{
[MagicalRecord cleanUp];
BOOL isSuccess = YES;
for (NSString *dbStore in [self dbBackups]) {
NSError *error = nil;
NSURL *storeURL = [NSPersistentStore MR_urlForStoreName:dbStore];
if(![[NSFileManager defaultManager] removeItemAtURL:storeURL error:&error]){
NSLog(@"An error has occurred while deleting %@", dbStore);
NSLog(@"Error description: %@", error.description);
isSuccess = NO;
}
}
if (isSuccess) {
[MagicalRecord setupCoreDataStackWithStoreNamed:CRP_DB];
}
}
- (NSArray *)dbBackups
{
NSString *shmFileName = [NSString stringWithFormat:@"%@-shm",CRP_DB];
NSString *walFileName = [NSString stringWithFormat:@"%@-wal",CRP_DB];
return @[CRP_DB,shmFileName,walFileName];
}
注册完成后,用户被导航到联系人屏幕,我们从服务器检索相关联系人并将其存储在本地数据库中。由于 FRC 用于从本地 DB 中检索数据并显示在表视图中,因此一旦将数据保存到 db 中,它就会自动显示在表视图中。
问题是—— 如果我在删除本地数据库后退出应用程序,重新启动时会显示正确的记录,但如果我在删除本地数据库后不退出应用程序,则会显示重复记录。
有什么线索吗?
【问题讨论】:
标签: ios core-data nsfetchedresultscontroller magicalrecord