你如何从 JSON 到 swift 中对 NSMutableArray 进行排序?

How do you sort NSMutableArray from JSON in swift?

我用 NSMutableArray 制作了一个 UITableview,以 JSON 的形式从服务器下载数据。当我执行 table 单元格时,代码如下所示。

if let rstrntName = self.items[indexPath.row]["rstrnt_name"] as? NSString {
    cell.rstrntName.text = rstrntName
}

现在我想按名为 "rstrnt_name" 的列对其进行排序。下面是我试过的代码,但它不起作用。

self.items.sortedArrayUsingComparator({obj1, obj2 -> NSComparisonResult in
    let rstrnt1: NSDictionary = obj1 as NSDictionary
    let rstrnt2: NSDictionary = obj2 as NSDictionary
    if (rstrnt1["rstrnt_name"] as String) < (rstrnt2["rstrnt_name"] as String) {
        return NSComparisonResult.OrderedAscending
    }
    if (rstrnt1["rstrnt_name"] as String) > (rstrnt2["rstrnt_name"] as String) {
        return NSComparisonResult.OrderedDescending
    }
    return NSComparisonResult.OrderedSame
})

如何对此类对象进行排序?

self.items.sortedArrayUsingComparator returns 一个排序数组,您似乎将其扔掉了。尝试存储该值。

这里是swift Array 类型排序方法与模式匹配。此 sort 方法直接变异 items 而不是 return 新方法。

var items: [[String: AnyObject]] = [["rstrnt_name": "mustafa"], ["rstrnt_name": "Ray"], ["rstrnt_name": "Ali"]]

items.sort { (left, right) -> Bool in
    let first = left["rstrnt_name"] as? String
    let second = right["rstrnt_name"] as? String

    switch (first, second) {
    case let (.Some(x), .Some(y)): return x < y
    default: return false
    }
}

将排序后的数组分配到任何地方并检查 -

self.items = self.items.sortedArrayUsingComparator(//rest of your code

应该给你排序后的结果。