gpt4 book ai didi

ios - 如何在 Swift 3 中按字母顺序排列对象数组?

转载 作者:可可西里 更新时间:2023-11-01 01:28:12 26 4
gpt4 key购买 nike

我尝试按字母顺序列出一组对象。我创建了这个简单的测试,但不知道如何使用对象数组实现此目的:

let names = ["Martin", "Nick", "Alex", "Ewa", "Barry", "Daniella", "Chris", "Robert", "Andrew"]

func alphabetizeArray(_ s1: String, _ s2: String) -> Bool {
return s1 < s2
}
let alphabeticNames = names.sorted(by: names)
print(reversedNames)

当我对一组对象尝试这样做时,我想到了这样的事情:

func sorterForIDASC(this:People, that:People) -> Bool {
return this.name > that.name
}
peoples.sort(by: sorterForIDASC)

但这会给我一个错误:Binary operator '>' cannot be applied to two 'String?'操作数

任何人都建议如何解决这个问题。我将检查来自 String 类型的每个对象的名称。我使用 Swift 3/Xcode8。

最佳答案

如果您只需要 >,那么为您的可选属性实现 > 就足够了:

func >(lhs: People, rhs: People) -> Bool {
if let left = lhs.name, let right = rhs.name {
return left > right
}
return false
}

现在您可以在对象数组上使用 >:

let result = arrayOfObjects.sorted(by: >)

您还可以让您的对象符合 Equatable 并至少为可选属性实现 ==>:

struct People: Equatable {
var name: String?
}

func ==(lhs: People, rhs: People) -> Bool {
if let left = lhs.name, let right = rhs.name {
return left == right
}
return false
}

func >(lhs: People, rhs: People) -> Bool {
if let left = lhs.name, let right = rhs.name {
return left > right
}
return false
}

这开启了更多的可能性。

关于ios - 如何在 Swift 3 中按字母顺序排列对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40202007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com