以下代码从核心数据填充我的表视图值单元格。显示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
答案 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) }
,则必须记住将其添加到数组中。