有没有办法在应用程序崩溃时删除sqlite.wal

时间:2016-02-01 06:54:14

标签: objective-c iphone sqlite core-data

我们的一位笔测试者提出了安全问题。他希望我们在应用程序崩溃和应用程序转到后台时删除sqlite.wal。我们在appdelgate类中编写了一个函数,它将删除wal文件。

请在下面找到代码段。

void uncaughtExceptionHandler(NSException *exception)
{
    id appdelegate = [[UIApplication sharedApplication] delegate];

    //Clear cache
    for(NSPersistentStore *store in [appdelegate persistentStoreCoordinator].persistentStores)
    {

        NSLog(@"\n\nUNCAUGHT EXCEPTION --- %@\n\n",[exception description]);
        NSError *error;
        NSURL *storeURL = store.URL;

        NSPersistentStoreCoordinator *storeCoordinator = [appdelegate persistentStoreCoordinator];
        [storeCoordinator removePersistentStore:store error:&error];
        [[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];
    }

    [appdelegate setPersistentStoreCoordinator:nil];
    [appdelegate setManagedObjectContext:nil];
    NSManagedObjectModel *managedObjectModel = [appdelegate managedObjectModel];
    managedObjectModel = nil;
}

我们的笔测试人员使用iExplorer工具访问sqlite.wal文件。我在mac中安装并测试过的相同工具。我发现的很奇怪。相同的代码在mac matchie中正常工作。但是在窗口中我们仍然可以看到wal文件。

请建议我解决这个问题。提前谢谢。

0 个答案:

没有答案