2015-01-07 103 views
0

我嘗試刪除tableview中的行,並刪除核心數據這樣的刪除對象:爲什麼在覈心數據的文件仍然存在,雖然我可以成功地在覈心數據

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 

     if editingStyle == UITableViewCellEditingStyle.Delete { 

      context.deleteObject(sounds[indexPath.row] as NSManagedObject) 
      sounds.removeAtIndex(indexPath.row) 
      context.save(nil) 
      tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade) 

     } 
    } 

與上下文= UIApplication.sharedApplication( ).delegate.managedObjectContext! 和聲音是我的陣列,它將對象存儲在覈心數據中。

我可以刪除該行併成功刪除核心數據中的文件。我可以檢查它,因爲我刪除行後,我再次運行我的應用程序,數據真的被刪除,並沒有出現在我的tableview。但是,當我在模擬器中檢查我的應用程序的文檔文件夾。我仍然看到一些sqlite文件的數據。爲什麼該文件仍在該文件夾中?我該如何刪除它?

+2

CoreData使用sqlite作爲數據庫(通常)存儲您的信息。刪除行時,會刪除數據庫中的信息**,而不刪除數據庫本身。 –

+1

@PhillipMills,這應該是一個答案 –

回答

1

我發現一個問題,我沒有刪除我自己的文件。所以我必須刪除數據文件,然後刪除數據庫中的信息:

var baseString : String = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as String 
    println("baseString: \(baseString)") 


    var pathComponents = [baseString, sound.url] 

    var fileManager:NSFileManager = NSFileManager.defaultManager() 
    var fileURL = NSURL.fileURLWithPathComponents(pathComponents)! 


    fileManager.removeItemAtURL(NSURL.fileURLWithPathComponents(pathComponents)!, error: nil)