07-CoreData清除所有数据
来源:互联网 发布:权力的游戏世界观 知乎 编辑:程序博客网 时间:2024/05/29 02:03
CoreData清空数据库
清空数据库可以使用删除文件的方式
通过沙盒路径进入到沙盒可以看到数据库文件有三个,我们逐一删除便可
代码中的kFileName是一个宏 表示创建的数据库文件名
NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; //沙盒中三个文件 NSString *filePath1 = [documentsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.db",kFileName]]; NSString *filePath2 = [documentsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.db-shm",kFileName]]; NSString *filePath3 = [documentsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.db-wal",kFileName]]; NSError *error; BOOL success = [fileManager removeItemAtPath:filePath1 error:&error]; [fileManager removeItemAtPath:filePath2 error:nil]; [fileManager removeItemAtPath:filePath3 error:nil]; if (success) { NSLog(@"Remove fiel:%@ Success!",kFileName); } else { NSLog(@"Could not delete file -:%@ ",[error localizedDescription]); }
CoreData清空数据库实际开发中注意事项
1.从原则上来讲,清空数据库时直接删除数据库文件的效率和便利性远大于先从数据库中取数据然后逐一删除2.但是虽然删除了数据库文件,继续从CoreData Stack技术栈堆中查询数据仍然可以查询到,这是因为在上一次的查询过程中,数据库中的数据已经被缓存到内存。3.网上有很多示例,要想清除CoreData缓存,ARC下直接设置CoreDataStack元素为nilkManagedObjectContext.managedObjectContext =nil;
kManagedObjectContext.persistentStoreCoordinator =nil;
kManagedObjectContext.persistentStore =nil;
我认为这样写是不专业的,如果需要再次使用就必须要重新初始化CoreData Stack,非常损耗性能
4.由于之前讲解过CoreData Stack中真正进行储存数据操作的是NSPersistentStore(存储器),所以这里只需要移除存储器再重新添加便可
NSURL *url = [[kManagedObjectContextgetDocumentsUrl]URLByAppendingPathComponent:@"mysql.db"isDirectory:YES];
NSLog(@"%@",kManagedObjectContext.persistentStoreCoordinator.persistentStores);
[kManagedObjectContext.persistentStoreCoordinatorremovePersistentStore:kManagedObjectContext.persistentStoreCoordinator.persistentStores[0]error:nil];
[kManagedObjectContext.persistentStoreCoordinatoraddPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nilURL:urloptions:nilerror:nil];
[self.tableViewreloadData];
- 07-CoreData清除所有数据
- 清除所有表数据
- 15-CoreData删除所有数据之NSBatchDeleteRequest
- 清除数据的所有内容
- 清除redis中所有数据
- 清除sql表中所有数据
- MSSQL清除数据库中所有数据
- 清除数据库中表中的所有数据
- sql server 清除某个数据库所有数据
- postgreSQL清除所有表 或 所有表中数据
- postgreSQL清除所有表 或 所有表中数据
- 移除NSUserDefaults里面的所有值(清除所有数据)
- 清除一个数据库里所有表的数据
- 清除一个数据库里所有表的数据
- sql清除表中所有数据,留下表结构
- 关于清除android /data下所有数据的命令
- mysql 删除(清除)所有表数据方法,表格保留
- [数据存储]CoreData
- PTA 模拟【string以及字母->数组下标】
- UVA - 699 The Falling Leaves
- 视频添加滤镜的预览和导出
- 网站挂马方法大全
- spring-boot项目简单搭建
- 07-CoreData清除所有数据
- 后台播放
- RS232和RS485接口的问答
- php定界符<<<EOF讲解
- 使用 Python 读取 8 GB 大小的文件
- Http之报文
- SpringMVC用户信息的action层UserInfoAction的类
- Spark Streaming使用Kafka保证数据零丢失
- Ctrl + Alt + F2