2017-09-05 80 views
0

我有以下代碼我的for循環的內容沒有得到迅速執行3

if editingStyle == .delete{ 
     let refreshAlert = UIAlertController(title: "Delete Collection", message: "All expenses in this collection will also be lost.", preferredStyle: UIAlertControllerStyle.alert) 

     refreshAlert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action: UIAlertAction!) in 
      let collection = self.collections[indexPath.row] 
      CoreDataHelper.deleteCollection(collection: collection) 

      for expense in self.collectionExpensesDelete{ 
       print ("deleted") 
       if expense.collection! == self.collections[indexPath.row].title{ 
        CoreDataHelper.deleteExpense(expense: expense) 
       } 
      } 
      self.collections.remove(at: indexPath.row) 
      self.collections = CoreDataHelper.retrieveCollections() 
     })) 

我想要做的就是刪除,如果集合被刪除相關的所有費用。然而,在中間的for循環,我放置它的斷點不會被調用。只有「for」語句的初始斷點被調用,並且不會調用其中的任何代碼,包括delete語句。

誰能告訴我我做錯了什麼?

+2

你在哪裏記錄?填充self.collectionExpensesDelete我認爲其空 – 3stud1ant3

+0

它是採用這樣的核心數據填充: v ar collectionExpensesDelete = [Expense](){ didSet { tableSet.reloadData() } } –

+0

我認爲您只是初始化類型爲Expense的空數組,您將在其中設置值,並確認其值空之前,循環添加打印(self.collectionExpensesDelete.count),並查看是否打印0 – 3stud1ant3

回答

-1

沒有理由爲您發佈上面說的for循環不應該被執行的代碼。

如果陳述被強制解包,中的expense.collection!存在潛在問題。這是故意的嗎?如果是這樣,爲什麼你不後衛讓的如果讓這一點。我可以很好的解釋爲什麼你的代碼如果語句沒有被執行。

什麼是CoreDataHelper?如果它是一個自定義的類來幫助管理與CoreData相互作用然後確保你已經在正確的CoreDataHelper類正確實施context.delete(object)

CoreDataHelper你應該是這樣的:

  • 獲取需要被刪除
  • 標記記錄刪除
  • 保存更改