gpt4 book ai didi

ios - 如何创建唯一键形式对象 NSArray 的 NSArray?

转载 作者:搜寻专家 更新时间:2023-10-31 22:23:35 30 4
gpt4 key购买 nike

我有一个 NSArray 对象:

class Object {
var name: String? = nil
var id: String? = nil
}

我想创建一个具有唯一“名称”值的 NSArray。通常在 Objective-C 中我会使用:

NSArray *filteredArray = [array valueForKeyPath:@"@distinctUnionOfObjects.name"]; 

但是 swift 中没有方法 'valueForKeyPath'。我怎样才能 swift 做到这一点?

最佳答案

没有直接的方法可以做到这一点 - 至少,我不知道。

实现这一目标的一种算法是使用字典来跟踪唯一名称,并利用“过滤器”和“ map ”:

var dict = [String : Bool]()

let filtered = array.filter { (element: Object) -> Bool in
if let name = element.name {
if dict[name] == nil {
dict[element.name!] = true
return true
}
}
return false
}

let names = filtered.map { $0.name!}

dict 存储已作为键处理的名称,以及作为值(被忽略)的 bool 值。我使用 filter 生成 Object 元素数组,其中 name 属性是唯一的,即如果 name< 则丢弃所有后续实例 属性在字典中找到。

获得具有唯一名称的元素数组后,我使用 mapObject 数组转换为 String 数组,从每个 Object 实例中获取 name 属性。

如果您要在多个地方重用此方法,最好将其作为扩展方法添加到 Array 类型。

关于ios - 如何创建唯一键形式对象 NSArray 的 NSArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26358252/

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