你如何从 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
应该给你排序后的结果。
我用 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
应该给你排序后的结果。