2015-12-11 55 views
0

我正在開發一個筆記應用中刪除,正如其名稱所示很明顯這是什麼應用程序做整個數據從數據庫

問題是,當我按垃圾桶按鈕,整個數據從數據庫中刪除,所有的筆記一旦按下按鈕就會被刪除,就像「全部刪除」一樣,只有視圖中的數據應該被刪除。

我該如何解決這個問題?

@IBAction func moveToTrash(sender: AnyObject) { 

let text = textView.text 

if (text.isEmpty){ 

    let alertController = UIAlertController(title: "Warning !", message: "There's Nothing to Delete", preferredStyle: .Alert) 


    let okayAction = UIAlertAction(title: "OK", style: .Default) { (action) in 
     print(action) 
    } 
    alertController.addAction(okayAction) 

    self.presentViewController(alertController, animated: false) { 

    } 


}else{ 

let managedObjectContext = (UIApplication.sharedApplication().delegate 
    as! AppDelegate).managedObjectContext 

let fetchRequest = NSFetchRequest() 
fetchRequest.entity = NSEntityDescription.entityForName("Note", inManagedObjectContext: managedObjectContext) 
fetchRequest.includesPropertyValues = false 
do { 
    if let results = try managedObjectContext.executeFetchRequest(fetchRequest) as? [NSManagedObject] { 
     for result in results { 
      managedObjectContext.deleteObject(result) 
     } 

     try managedObjectContext.save() 
    } 
} catch { 
    print(error) 
    return 
} 

self.navigationController?.popViewControllerAnimated(true) 

} 

} 

請注意,我還是新手的iOS開發

enter image description here

回答

0

它這樣做,因爲這是你的代碼告訴它做的事。此代碼:

let fetchRequest = NSFetchRequest() 
fetchRequest.entity = NSEntityDescription.entityForName("Note", inManagedObjectContext: managedObjectContext) 
fetchRequest.includesPropertyValues = false 
do { 
    if let results = try managedObjectContext.executeFetchRequest(fetchRequest) as? [NSManagedObject] { 
     for result in results { 
      managedObjectContext.deleteObject(result) 
     } 

     try managedObjectContext.save() 
    } 
} 

獲取的Note實體的每個實例,然後遍歷它們,刪除每一個。然後它保存更改。噗!沒有更多的筆記。

您的視圖控制器可能有一個引用當前顯示的註釋的屬性。在您的屏幕截圖中,將包含文本「note 2」的對象。您需要使用deleteObject刪除該對象。您不需要執行提取操作,因爲您已經擁有了所需的對象。