我有一个表视图控制器,我在其中声明了一个字典和一个数组:
var parts = [:]var partsSectionTitles: NSArray!
在我的vIEwDIDLoad函数中,我有:
parts = [ "Part 1" : ["X:1","X:2","X:3"],"Part 2" : ["X:1","X:2"],"Part 3" : ["X:1"] ]var partsSectionTitles = parts.allKeys
我已经在Objective-C中成功完成了这个表视图控制器,并且为了按字母顺序对partsSectionTitles进行排序,我使用了:
partsSectionTitles = [[parts allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
所以,我的问题是:如何在Swift中编写前面的Objective-C代码?提前感谢您的回答.
更新:我能够使用您提供的答案中的点点滴滴来解决问题.所以谢谢!这就是我所拥有的:
我将零件字典声明为:
var parts = [String:[String]]()
这让我可以为每个键提供多个值.这是一个巨大的帮助.
然后我就能够创建partsSectionTitles并对其进行排序:
partsSectionTitles = [String](parts.keys)partsSectionTitles.sort(){extension Array { var decompose : (head: T,tail: [T])? { return (count > 0) ? (self[0],Array(self[1..<count])) : nil }}< }
这很有效,因为我没有收到错误.
解决方法 一个很好的Quicksort函数来订购你的字符串数组怎么样? ( Source)首先创建一个Array扩展来分解给定的数组:
func qsort(input: [String]) -> [String] { if let (pivot,rest) = input.decompose { let lesser = rest.filter {var partsOfNovel = [String : [String]]()var partsSectionTitles = [String]()< pivot } let greater = rest.filter {partsOfNovel = [ "Part 1" : ["Chapter X:1","Chapter X:2","Chapter X:3"],"Part 2" : ["Chapter X:1","Chapter X:2"],"Part 3" : ["Chapter X:1"]]partsSectionTitles = partsOfNovel.allKeys// ["Part 1","Part 3","Part 2"]>= pivot } return qsort(lesser) + [pivot] + qsort(greater) } else { return [] }}
第二步创建Quicksort函数,以便您可以订购分解的数组:
var orderedSectionTitles = qsort(partsSectionTitles)// ["Part 1","Part 2","Part 3"]
使用显式类型(Dictionary和Array)声明变量:
填写他们:
最后订购你的Strings Array:
我认为纯粹的Swift是一个很好的解决方案,我希望它有所帮助!
总结以上是内存溢出为你收集整理的ios – Swift:按字母顺序排序数组全部内容,希望文章能够帮你解决ios – Swift:按字母顺序排序数组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)