加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

数组 – 使用空项目在Swift Ascending中对数组进行排序

发布时间:2020-12-14 18:09:22 所属栏目:百科 来源:网络整理
导读:在 Xcode( Swift)中,我有一个初始化为100个空项的数组: var persons = [String](count:100,repeatedValue: "") 通过一些函数,我将内容添加到数组中的位置,从0开始. 所以例如我的数组在某个特定时刻: ["Bert","Daniel","Claire","Aaron","",... ""] 用点表
在 Xcode( Swift)中,我有一个初始化为100个空项的数组:

var persons = [String](count:100,repeatedValue: "")

通过一些函数,我将内容添加到数组中的位置,从0开始.

所以例如我的数组在某个特定时刻:

["Bert","Daniel","Claire","Aaron","",... ""]

用点表示其余的空项目.我使用此函数按字母顺序对数组进行排序:

persons = persons.sorted {$0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending }

这给了我一个像这样的数组:

["",...,"Bert","Daniel"]

我想要的是按字母顺序排序我的数组,而不是前面的空项目.我需要得到一个像:

["Aaron",""]

就我而言,我不想要一个带有空项的数组但是我发现如果我没有声明像100个项目那么我就无法为我的数组添加一个值(该数组不会被填充到100个项目,这是为了当然).

谁能帮我吗?

解决方法

正如@Antonio所说,看起来你需要一个降序的字符串集.除了@Antonio的答案中的Dictionary方法(效果很好),你也可以使用NSMutableSet(从Objective-C桥接):

let personSet = NSMutableSet()
personSet.addObject("Aaron")
personSet.addObject("Daniel")
personSet.addObject("Claire")
personSet.addObject("Aaron")
personSet.addObject("Bert")
personSet.addObject("Bert")
personSet.addObject("Joe")
personSet.removeObject("Joe") // You can remove too of course

这创建了集合:

{(
    Claire,Aaron,Daniel,Bert
)}

然后,当您希望将人们作为数组时,您可以使用allObjects强制转换为[String]:

personSet.allObjects as [String]

你可以像你现在一样对它进行排序:

let people = (personSet.allObjects as [String]).sort {$0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending }

这让人们:

[Aaron,Bert,Claire,Daniel]

对于那些想知道如何按照问题中最初所述的方式对数组进行排序(升序但最后用空字符串)的人来说,这可以通过sort函数中的一些自定义逻辑来完成:

var persons = ["Bert",""]
persons.sort { (a,b) -> Bool in
    if a.isEmpty {
        return false
    } else if b.isEmpty {
        return true
    } else {
        return a.localizedCaseInsensitiveCompare(b) == .OrderedAscending
    }
}

结果:

["Aaron",""]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读