比较swift中不同行的两个标签

时间:2016-02-22 18:13:31

标签: ios swift

请告诉我,如何比较Tableview中不同行的两个相同(标签名称为“labelNumber”)的标签

例如:我知道,行№0标签中的“06”(Int)和下一个单元格(行№1)中的标签是“07”。所以,“07”> “06”。如何将它与快速语言进行比较?

谢谢!

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

错误的方式

@vadian 所述,您不应使用您填充的用户界面来执行数据计算。

但是,这是用于比较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]
    }

}