Swift(Xcode 7.3.1)和使用字典中的值进行排序

Swift(Xcode 7.3.1)和使用字典中的值进行排序,swift,sorting,nsmutabledictionary,Swift,Sorting,Nsmutabledictionary,我有一个字典数组,如下所示,我想对它进行排序和存储,以便根据“Like”键的“value”对对象进行排序?我如何在Swift中执行此操作?谢谢 { Dislike = 0; Like = 5; userName = T; } { Dislike = 0; Like = 0; userName = S; } { Dislike = 0; Like = 10; userName = N; } 我想那是一系列字典吧 如果是这样,

我有一个字典数组,如下所示,我想对它进行排序和存储,以便根据“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{ $0["Like"]!! > $1["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
功能。在闭包中,您应该返回第一个参数是否应该在第二个参数之前排序。在这种情况下,您只希望比较与键
“like”
对应的值。闭包体的外观如下:(伪代码)

firstParameter[“Like”]
正如我所说,这是伪代码。真正的代码要复杂一些:

data.sort { ($0["Like"]! as! Int) < ($1["Like"] as! Int) }
data.sort{($0[“Like”]!as!Int)<($1[“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{$0.Like < $1.Like}
结构{
变量:Int=0
类变量:Int=0
var userName:String=“”
}
var myArray=[s]()
var i=s()
i、 不喜欢=0
i、 Like=5
i、 userName=“T”
myArray.append(i)
i、 不喜欢=0
i、 Like=0
i、 userName=“S”
myArray.append(i)
i、 不喜欢=0
i、 Like=10
i、 userName=“N”
myArray.append(i)
myArray.sort{$0.Like<$1.Like}

我真的不明白您展示的数据结构是什么。听起来像是一系列字典。是吗?是的,这是一系列字典。有两件事:(1)
任何对象
都无法与
进行比较。(2)
sort
不会变异数组,
sortInPlace
会。1)这就是我执行双重展开的原因。2) 对不起,你是对的。我最近一直在和斯威夫特3一起工作,但我忘了。在Swift 3中,它确实会变异数组。
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{$0.Like < $1.Like}