[英]Swift sort array by 2 parameters
該數組包含Entity實例(核心數據的圖形庫):
let timCook = Entity(type: "Employees")
timCook["name"] = "Tim Cook"
timCook["company"] = "Apple"
上面的代碼不起作用,我認為&&不是按多個值排序的正確方法...
self.storage.sortInPlace ({ ($0["company"] as? String) < ($1["company"] as? String)
&& ($0["name"] as? String) < ($1["name"] as? String)
})
謝謝
不要as!
非常。 實際上,根本不使用它。 如果您確定該值存在,則應該選擇其他數據類型而不是字典。
struct Storage {
let company: String
let name: String
}
var storage: [Storage]
// fill storage with objects
storage.sortInPlace {
if $0.company == $1.company { return $0.name < $1.name }
return $0.company < $1.company
}
好的,如果要先按公司排序,然后再按名稱排序,則首先必須檢查公司的平等性。 如果公司相同,則返回名稱排序,否則,僅返回兩個公司之間的比較結果。
self.storage.sortInPlace {
if ($0["company"] as! String) == ($1["company"] as! String)
{
return ($0["name"] as! String) < ($1["name"] as! String)
}
return $0["company"] as! String) < ($1["company"] as! String)
}
甚至更短:
self.storage.sortInPlace { (($0["company"] as! String) == ($1["company"] as! String)) ? (($0["name"] as! String) < ($1["name"] as! String)) : ($0["company"] as! String) < ($1["company"] as! String)) }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.