繁体   English   中英

快速比较不同行中的两个标签

[英]Compare two labels from different rows in swift

请问我,如何更好地比较Tableview中不同行中的两个相同(标签具有名称“ labelNumber”)标签

例如:我知道,在第0行的标签是“ 06”(整数),在下一个单元格(第1行)中的标签是“ 07”。 因此,“ 07”>“ 06”。 如何与快速语言进行比较?

谢谢!

比较存储在数据数组中的值:

if dataArray[0].myIntegerValue > dataArray[1].myIntegerValue {
    // Do your stuff
}

编辑:这假定您的数据存储为该Int作为属性的对象。

正如其他人所说,不要那样做。 在MVC设计模式中,标签是视图。 它们用于显示数据,而不是存储数据。

尝试从表视图标签中读取值特别糟糕,因为当表视图滚动时,屏幕外的单元格将被回收并且其视图中的值将被丢弃。 您需要将数据保存到模型对象。 (数组可以很好地保存表视图数据,而数组可以用于分段表视图。)

错误的方法

@vadian所述 ,您不应使用填充的UI对数据执行计算。

但这是用于比较2个UITableViewCell(s)的值的代码

class Controller: UITableViewController {

    func equals(indexA: NSIndexPath, indexB: NSIndexPath) -> Bool? {
        guard let
            cellA = tableView.cellForRowAtIndexPath(indexA),
            cellB = tableView.cellForRowAtIndexPath(indexB) else { return nil }

        return cellA.textLabel?.text == cellB.textLabel?.text
    }
}

正确的方式

考虑一下您如何填充单元格。 我想您正在使用某些模型值。 因此,只需比较用于填充单元格的模型值即可。

大概是这样的

class Controller: UITableViewController {

    var data: [Int] = [] // ....

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        guard let cell = tableView.dequeueReusableCellWithIdentifier("YourCellID") else { fatalError("No cell found with this id: 'YourCellID'")}
        cell.textLabel?.text = String(data[indexPath.row])
        return cell
    }

    func equals(indexA: NSIndexPath, indexB: NSIndexPath) -> Bool? {
        return data[indexA.row] == data[indexB.row]
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM