gpt4 book ai didi

ios - Swift 如何使用属性按给定顺序对自定义对象数组进行排序

转载 作者:搜寻专家 更新时间:2023-11-01 06:02:32 25 4
gpt4 key购买 nike

我有一组按特定顺序排列的 restaurantIds。我进行网络调用以获取这些 ID 中的每一个的 Restaurants。我按照所有餐厅的返回顺序返回。 Restaurants 是一个自定义类,其中一个属性是 restaurantId。我想按 ID 的顺序对返回的 Restaurants 进行排序。我该怎么做?我想我应该使用 sorted 函数。我将如何继续这样做?可能有重复的餐厅,所以我不能用字典来做。如果是返回的重复餐厅,那么该餐厅的哪个实例先出现并不重要。

var restaurantIds = [947575, 858914, 255964]
var returnedRestaurant:[Restaurant]!
returnedRestaurant.sorted { (rest1, rest2) -> Bool in
//How would I go about matching rest1 and rest2 to the list of restaurantIds above?
rest1.productID......
}

最佳答案

如果我理解正确,您希望按照 ID 在 restaurantIds 中出现的顺序对数组进行排序。

Array 提供了方法 index(of:) 给定一个元素返回它在数组中第一次出现的索引。例如 restaurantIds.index(of:858914) 将返回 1

您可以使用 index(of:) 的结果作为您的排序键。 IE。在您的排序函数中,您需要比较 rest1 的值将是 restaurantIds.index(of: rest1.productID)

HTH

附录

@vacawama 提出的问题在原则上都是正确的,但在实践中可能是错误的...使用 restaurantIds.index(of: rest1.productID) 很多不利于性能,对于较长的餐厅 ID 列表,您可能需要通过避免重复 index(of:) 调用来优化。然而,对于短列表,任何性能变化(可能是赢也可能是输)都可能微不足道,优化只会使代码复杂化。

TL;DR:YMMV,KISS,提防过早优化,由您决定。

关于ios - Swift 如何使用属性按给定顺序对自定义对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45402908/

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