2017-09-05 44 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你应该是这样的:

  • 获取需要被删除
  • 标记记录删除
  • 保存更改