07-CoreData清除所有数据
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元素為nil
kManagedObjectContext.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清除所有数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 06-CoreData增删改查
- 下一篇: 08-CoreData学习总结