gpt4 book ai didi

swift - 获取 Swift 集中的下一个项目

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

我想获得 Set<ShopItemCategory> 中的下一项.我以为我可以获得当前项目的索引作为 Int然后使用该索引通过向其添加 1 来获取同一集合中的下一项(除非它是集合中的最后一项,否则索引将设置为 0)。但是,indexOf 没有返回 Int对我来说。它返回类型 SetIndex<ShopItemCategory> .我如何返回类型 Int索引,或者以其他更简单的方式一次循环设置 1 个项目?

mutating func swapCategory() {
var categoryIndex =
self.allShopItemCategories.indexOf(self.currentShopItemCategory)
if categoryIndex == self.allShopItemCategories.count - 1 {
categoryIndex = 0
} else {
categoryIndex++
}
self.currentShopItemCategory = self.allShopItemCategories[catIndex!]

}

最佳答案

你不能。因为 Set 中的元素没有排序。

另一方面,您可以从您的 Set 构建一个 Array 并根据需要访问元素。

看下面的例子:

class Foo<T:Hashable> {
private let list: [T]
private var currentIndex = 0
var nextElm : T {
currentIndex = (currentIndex + 1) % list.count
return list[currentIndex]
}
init(set: Set<T>) {
list = Array(set)
}
}

let set : Set = [1,2,3]
let foo = Foo(set: set)

foo.nextElm // 3
foo.nextElm // 2
foo.nextElm // 1
foo.nextElm // 3
foo.nextElm // 2
foo.nextElm // 1

希望这对您有所帮助。

关于swift - 获取 Swift 集中的下一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32545183/

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