在每个UITableViewCell的单元格

时间:2018-03-06 16:24:41

标签: ios swift function uitableview core-data

UITableView中的每个单元格都有一个amountValue值存储在CoreData中。我的表格视图是一个钱包,因此最后一步是添加每个$并将总计显示为wallet value

我试图在amountValue中迭代tableView func updateWalletValue() { // CryptosMO is the Managed Object with an `amountValue` attribute among others. var item : [CryptosMO] = [] if CoreDataHandler.fetchObject() != nil { item = CoreDataHandler.fetchObject()! tableView.reloadData() } for section in 0...self.tableView.numberOfSections { if (self.tableView.numberOfRows(inSection: section) > 0) { for row in 0...self.tableView.numberOfRows(inSection: section) { let total = item[row].amountValue! + item[row + 1].amountValue! print("TOTAL :", total) } } } } ,但没有成功。

以下是我目前的情况:

Thread 1: signal SIGABRT

目前我在App Delegate上获得amountValue

我该怎么做才能解决问题并使计算成为可能?

编辑:进一步测试后,访问SELECT substr(string(DATE),0,8) as daydate, count(1), avg(float(REGEXP_REPLACE(V2Tone, r',.*', ""))) tone , avg(float(REGEXP_EXTRACT(GCAM, r'v19.1:([-d.]+)'))) anew,sum(integer(REGEXP_EXTRACT(GCAM, r'c8.3:([-d.]+)'))) ridanxietycnt, sum(integer(REGEXP_EXTRACT(GCAM, r'wc:(d+)'))) wordcount FROM [gdeltv2.gkg] where V2Locations like '%Turkey%Turkey%' group by daydate 会导致应用程序崩溃..

2 个答案:

答案 0 :(得分:0)

您的代码不是很安全。要避免强行解缠并不困难,你应该从这开始。

例如:

  if CoreDataHandler.fetchObject() != nil {
        item = CoreDataHandler.fetchObject()!
        tableView.reloadData()
    }

Aren你丢弃了初始fetchObject()调用的结果吗? 这可以改写为:

  if let nextItem = CoreDataHandler.fetchObject()  {
        item.append(nextItem)
        tableView.reloadData()
    }

我假设该项目是您的数据源。 [否则重新加载表格视图的调用没有意义]

您提供的下一个代码块也可以重构为更安全。在对其进行任何数学运算之前,请确认您有一个amountValue。

最后,这段代码可能不在你的AppDelegate.swift文件中?你是否从app delegate中调用了这段代码?

你需要把它分解成可管理的块 - 我想你在这里有不止一个问题。

答案 1 :(得分:0)

您只需在项目

上应用 reduce 高阶方法即可
let total = item.reduce(Double(0.0)) { (result, nextItem) -> Double in
    return result + (nextItem.amountValue!)
}