本文主要总结项目开发中,CoreData中,删除数据库数据的几种操作方式。
一、使用上下文的deleteObject方法
- NSManagedObjectContext *context = ...;
- NSEntityDescription *description = [NSEntityDescription entityForName:@"Table" inManagedObjectContext:context];
- NSFetchRequest *request = [[NSFetchRequest alloc] init];
- [request setIncludesPropertyValues:NO];
- [request setEntity:description];
- NSError *error = nil;
- NSArray *datas = [context executeFetchRequest:request error:&error];
- if (!error && datas && [datas count])
- {
- for (NSManagedObject *obj in datas)
- {
- [context deleteObject:obj];
- }
- if (![context save:&error])
- {
- NSLog(@"error:%@",error);
- }
- }
二、在XMPP中使用了MagicalRecord时的删除
- //Table为一张表的名称
- NSFetchRequest *request = [[NSFetchRequest alloc] init];
- NSEntityDescription *description = [NSEntityDescription entityForName:@"Table" inManagedObjectContext:[NSManagedObjectContext MR_defaultContext]];
- [request setEntity:description];
- NSArray *datas1 = [Table MR_executeFetchRequest:request];
- if (datas1 && [datas1 count])
- {
- for (Table *obj in datas1)
- {
- [obj deleteEntity];
- }
- [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
- }
三、够2B的删除
1.删除数据库文件(你删除部分数据肯定不能用这个)
- NSPersistentStore *store = ...;
- NSError *error;
- NSURL *storeURL = store.URL;
- NSPersistentStoreCoordinator *storeCoordinator = ...;
- [storeCoordinator removePersistentStore:store error:&error];
- [[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];
2.使用sqlite自带的删除方法
比如用FMDB写一个sql语句:"delete from table"