亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

刪除/重置核心數據中的所有條目?

刪除/重置核心數據中的所有條目?

莫回無 2019-07-12 16:32:28
刪除/重置核心數據中的所有條目?您知道有什么方法可以刪除全部存儲在Core數據中的條目嗎?我的模式應該保持不變;我只想把它重置為空白。編輯我希望通過編程來實現這一點,這樣用戶就可以在reset紐扣。
查看完整描述

3 回答

?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

您可以刪除SQLite文件-但是我選擇通過使用函數單獨清除表來做到這一點:

- (void) deleteAllObjects: (NSString *) entityDescription  {
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:entityDescription inManagedObjectContext:_managedObjectContext];
    [fetchRequest setEntity:entity];

    NSError *error;
    NSArray *items = [_managedObjectContext executeFetchRequest:fetchRequest error:&error];
    [fetchRequest release];


    for (NSManagedObject *managedObject in items) {
        [_managedObjectContext deleteObject:managedObject];
        DLog(@"%@ object deleted",entityDescription);
    }
    if (![_managedObjectContext save:&error]) {
        DLog(@"Error deleting %@ - error:%@",entityDescription,error);
    }}

我選擇逐個表這樣做的原因是,它使我在編程時確認,刪除表的內容是明智的,而且沒有我更愿意保存的數據。

這樣做比僅僅刪除文件要慢得多,如果這個方法花費太長時間,我將更改為文件刪除。


查看完整回答
反對 回復 2019-07-12
?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

更新iOS 10+解決方案

使用NSBatchDeleteRequest刪除實體中的所有對象,而不必將它們加載到內存中或迭代它們。

// create the delete request for the specified entitylet fetchRequest:
 NSFetchRequest<NSFetchRequestResult> = MyEntity.fetchRequest()let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
 // get reference to the persistent containerlet persistentContainer = (UIApplication.shared.delegate as! AppDelegate).persistentContainer
 // perform the deletedo {
    try persistentContainer.viewContext.execute(deleteRequest)} catch let error as NSError {
    print(error)}

此代碼已為IOS 10和SWIFT 3更新。這個問題.

資料來源:


查看完整回答
反對 回復 2019-07-12
  • 3 回答
  • 0 關注
  • 591 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號