Swift (Xcode 7.3.1) 并使用字典中的值进行排序
Swift (Xcode 7.3.1) and sorting using values in a Dictionary
我有一个字典数组,如下所示,我想对其进行排序和存储,以便根据 'Like' 键的 'value' 对对象进行排序?我如何在 Swift 中执行此操作?谢谢
{
Dislike = 0;
Like = 5;
userName = T; }
{
Dislike = 0;
Like = 0;
userName = S; }
{
Dislike = 0;
Like = 10;
userName = N; }
我想这是一个字典数组?
如果是这样,您可以按如下排序
//AnyObject in case your number is an NSNumber
var array: [[String:AnyObject?]] = yourArray
array.sort{ [=10=]["Like"]!! > ["Like"]!! }
基本上它会改变数组并根据 "Like" 键进行排序。
你知道这个数据结构看起来很奇怪。我认为是[[String: Any]]
。它应该这样声明:
let data: [[String: Any]] = [
[
"Dislike": 0,
"Like": 5,
"username": "T"],
[
"Dislike": 0,
"Like": 0,
"username": "S"],
[
"Dislike": 0,
"Like": 10,
"username": "N"],
]
要对其进行排序,只需使用 sort
函数即可。在闭包中,你应该 return 第一个参数是否应该排在第二个参数之前。在这种情况下,您只想比较与键 "Like"
对应的值。闭包主体看起来像这样:(伪代码)
firstParameter["Like"] < secondParameter["Like"]
正如我所说,那是伪代码。真正的代码稍微复杂一点:
data.sort { ([=12=]["Like"]! as! Int) < (["Like"] as! Int) }
Sweeper 和 Edder 说得对,它看起来像一个结构体数组。您也可以省略分号。
struct s {
var Dislike: Int = 0
var Like: Int = 0
var userName: String = ""
}
var myArray = [s]()
var i = s()
i.Dislike = 0
i.Like = 5
i.userName = "T"
myArray.append(i)
i.Dislike = 0
i.Like = 0
i.userName = "S"
myArray.append(i)
i.Dislike = 0
i.Like = 10
i.userName = "N"
myArray.append(i)
myArray.sort{[=10=].Like < .Like}
我有一个字典数组,如下所示,我想对其进行排序和存储,以便根据 'Like' 键的 'value' 对对象进行排序?我如何在 Swift 中执行此操作?谢谢
{
Dislike = 0;
Like = 5;
userName = T; }
{
Dislike = 0;
Like = 0;
userName = S; }
{
Dislike = 0;
Like = 10;
userName = N; }
我想这是一个字典数组?
如果是这样,您可以按如下排序
//AnyObject in case your number is an NSNumber
var array: [[String:AnyObject?]] = yourArray
array.sort{ [=10=]["Like"]!! > ["Like"]!! }
基本上它会改变数组并根据 "Like" 键进行排序。
你知道这个数据结构看起来很奇怪。我认为是[[String: Any]]
。它应该这样声明:
let data: [[String: Any]] = [
[
"Dislike": 0,
"Like": 5,
"username": "T"],
[
"Dislike": 0,
"Like": 0,
"username": "S"],
[
"Dislike": 0,
"Like": 10,
"username": "N"],
]
要对其进行排序,只需使用 sort
函数即可。在闭包中,你应该 return 第一个参数是否应该排在第二个参数之前。在这种情况下,您只想比较与键 "Like"
对应的值。闭包主体看起来像这样:(伪代码)
firstParameter["Like"] < secondParameter["Like"]
正如我所说,那是伪代码。真正的代码稍微复杂一点:
data.sort { ([=12=]["Like"]! as! Int) < (["Like"] as! Int) }
Sweeper 和 Edder 说得对,它看起来像一个结构体数组。您也可以省略分号。
struct s {
var Dislike: Int = 0
var Like: Int = 0
var userName: String = ""
}
var myArray = [s]()
var i = s()
i.Dislike = 0
i.Like = 5
i.userName = "T"
myArray.append(i)
i.Dislike = 0
i.Like = 0
i.userName = "S"
myArray.append(i)
i.Dislike = 0
i.Like = 10
i.userName = "N"
myArray.append(i)
myArray.sort{[=10=].Like < .Like}