来自coreData数组的true布尔值

时间:2017-11-10 22:36:42

标签: ios swift core-data

以下代码从核心数据填充我的表视图值单元格。显示otsBranch和Date值。我试图弄清楚如何计算记录的真实布尔值的数量,并在表格单元格中显示数字。 let arr = ots功能是我尝试这样做的。但它给我一个错误“类型OTSProcessConfirmation不符合协议序列”

   func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return otsProcessConfirmations.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    let ots = otsProcessConfirmations[indexPath.row]

    let date = otsProcessConfirmations[indexPath.row].otsDate
    let formatter = DateFormatter()
    formatter.dateStyle = .medium
    formatter.timeStyle = .none


    let arr = ots
    var trueCounter = 0
    for bElem in arr where bElem { trueCounter += 1 }
    print(trueCounter) // 3

    cell.textLabel?.text = ots.otsBranch
    cell.detailTextLabel?.text = formatter.string(from: date! as Date)


    return cell
}

// coredata中的属性,带有布尔值,我想要计算真数。

         ots.otsQ1
         ots.otsQ2
          ots.otsQ3
          ots.otsQ4
         ots.otsQ5
         ots.otsQ6
         ots.otsQ7
          ots.otsQ8
          ots.otsQ9
        ots.otsQ10
        ots.otsQ11
         ots.otsQ12
         ots.otsQ13
         ots.otsQ14

1 个答案:

答案 0 :(得分:0)

这很尴尬,因为您的对象没有要处理的值数组,只有几个类似命名的属性。我认为最简单的解决方案是在代码中构建一个数组,然后处理:

SELECT 
    c.cus_Name,
    COUNT(o.orderHeader_id) AS Orders,
    (select count(ol.orderLines_id) from orderlines ol where ol.orderLines_orderId = o.orderHeader_id) as linesOrderd,
    MAX(o.orderHeader_dateCreated) AS lastOrdered,
    SUM(o.orderHeader_totalSell) AS orderTotal,
    SUM(o.orderHeader_currentSell) AS sellTotal
FROM
    cus c
        JOIN
    orderheader o ON o.orderHeader_customer = c.cus_id
group by
    c.cus_name
order by 
    orderTotal desc

这意味着如果添加另一个布尔值let array = [ots.otsQ1, ots.otsQ2, ots.otsQ3, ots.otsQ4, ots.otsQ5, ots.otsQ6, ots.otsQ7, ots.otsQ8, ots.otsQ9, ots.otsQ10, ots.otsQ11, ots.otsQ12, ots.otsQ13, ots.otsQ14] let trueCounter = arr.reduce(0) { $0 + ($1 ? 1 : 0) } ,则必须记住将其添加到数组中。