Arrays 敏捷的结构的排序数组
我需要订购一个Arrays 敏捷的结构的排序数组,arrays,xcode,swift,sorting,Arrays,Xcode,Swift,Sorting,我需要订购一个struct数组 我试过: let aRes = self.aSoundTracks_Filtered.sort{ $0.st < $1.st } 我的结构是这样的: var aSoundTracks_Filtered = [SoundTrack]() struct SoundTrack { let sID : Int let st : String } 当您在操场上以以下方式进行测试时,您的代码运行良好: struct SoundTrack {
struct
数组
我试过:
let aRes = self.aSoundTracks_Filtered.sort{ $0.st < $1.st }
我的结构是这样的:
var aSoundTracks_Filtered = [SoundTrack]()
struct SoundTrack {
let sID : Int
let st : String
}
当您在操场上以以下方式进行测试时,您的代码运行良好:
struct SoundTrack {
let sID : Int
let st : String
}
var aSoundTracks_Filtered = [SoundTrack]()
aSoundTracks_Filtered.append(SoundTrack(sID: 1, st: "a"))
aSoundTracks_Filtered.append(SoundTrack(sID: 2, st: "b"))
aSoundTracks_Filtered.sort{ $0.st > $1.st } // [{sID 2, st "b"}, {sID 1, st "a"}]
但是sort()
在适当的位置对数组进行排序。您可能希望使用的是sorted()
,它不会修改原始数组并返回新的排序数组:
let aRes = aSoundTracks_Filtered.sorted{ $0.st > $1.st }
上面的代码是针对Swift 1.2的,对于Swift 2.0,返回排序数组再次被称为“sort”,但它现在是(协议扩展)方法,而不是全局函数。我希望这能对你有所帮助。所以,这其实很简单。但是,我想知道当您访问阵列时,
self
从何而来。我不知道它属于哪个类,如果它属于结构本身(我不知道为什么,只是以防万一),在更改结构属性的值时,必须将函数标记为变异。第二件事实际上是你必须使用花括号:
self.aSoundTracks_Filtered.sort({$0.st < $1.st})
self.aSoundTracks\u Filtered.sort({$0.st<$1.st})
我假设的aSoundTracks\u Filtered
是您的数组?它包含什么类型,你能提供相应的代码吗?看起来像是一个类型推断问题,请尝试{(a,b)->Bool in a.st
我已经为问题添加了信息。希望它能帮助OISDK:let hasPrefixAndSuffix=self.aSoundTracks_Filtered.sort{(a,b)->Bool in a.staSoundTracks\u Filtered
是一个数组而不是一个函数,请参见声明,括号的使用是可选的,您可以调用sort
,而不使用它,请参见我的回答我当然知道-您所做的是使用尾部闭包,因此事实上,是的,您可以消除偏执。但是,将值强制转换为隐式展开的可选值是不合适的,正如我以前在您的回答中所看到的,正如您在我的上一个回答中所看到的,显式强制转换不是可选的。您可以在我的回答中阅读更多关于它的内容。您的另一个回答暗示了这样一个事实,即您必须在订阅字典时展开可选值可选-完全不同的主题Your 2 suggestions return无法使用类型为“(((,-)>)”的参数列表调用“sort”:(我使用Xcode 6.4和Swift 1.2进行了测试,效果很好。谢谢!…对我也有轻微的修改
self.aSoundTracks_Filtered.sort({$0.st < $1.st})