HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – Swift:按字母顺序排序数组大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我是 Swift和Objective-C的新手.

我有一个表视图控制器,我在其中声明了一个字典和一个数组:

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(){ $0 < $1 }

这很有效,因为我没有收到错误.

解决方法

一个很好的Quicksort函数来订购你的字符串数组怎么样? ( Source)

首先创建一个Array扩展来分解给定的数组:

extension Array {
  var decompose : (head: T,tail: [T])? {
    return (count > 0) ? (self[0],Array(self[1..<count])) : nil
  }
}

第二步创建Quicksort函数,以便您可以订购分解的数组:

func qsort(input: [String]) -> [String] {
  if let (pivot,rest) = input.decompose {
    let lesser = rest.filter { $0 < pivot }
    let greater = rest.filter { $0 >= pivot }
    return qsort(lesser) + [pivot] + qsort(greater)
  } else {
    return []
  }
}

使用显式类型(Dictionary和Array)声明变量:

var partsOfNovel = [​String​ : [String]]()
var partsSectiontitles = [String]()

填写他们:

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"]

最后订购你的Strings Array:

var orderedSectiontitles = qsort(partsSectiontitles)
// ["Part 1","Part 2","Part 3"]

我认为纯粹的Swift是一个很好的解决方案,我希望它有所帮助!

大佬总结

以上是大佬教程为你收集整理的ios – Swift:按字母顺序排序数组全部内容,希望文章能够帮你解决ios – Swift:按字母顺序排序数组所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。