首页 > 解决方案 > 如何遍历数组并对最后一个索引做一些不同的事情?

问题描述

所以,我有一个Genre对象数组,其中包含我想要包含值的name属性。StringsUILabel.text

我希望标签最终看起来像这样:

字符串[0] / 字符串[1] / 字符串[2] / 字符串[3]

前斜线分隔字符串。我可以得到包含值的标签,甚至可以得到 / 分隔符,但是我的逻辑有缺陷,因为在最后一个字符串之后我仍然得到前斜杠。

有人可以帮助我添加字符串和正斜杠的逻辑,除非它是数组中的最后一项,如果它是数组中的最后一项,它应该只添加字符串而不是正斜杠。

现在我只有一个简单的 For In 循环

if game?.genres?[0].name == nil {

for genre in game!.genres! {
    genreLabel.text! += "\(genre.name!) / "
    }
}

我试过了 game.genres.map { $0.name }.joined(separator: “ / “)

但这给出了以下错误: Value of type '[Genre]' has no member 'name'

用最后一个元素做一些不同的事情的逻辑是什么?

标签: iosswift

解决方案


因为您没有使用足够的问号,所以编译器认为您使用的是Optional.map而不是Array.map

你可以得到你想要的结果,像这样:

game?.genres?.compactMap(\.name).joined(separator: " / ")

…但是你使用了太多的选项。只是使genres非可选。数组可能已经为空。它也不需要是nil

game?.genres.compactMap(\.name).joined(separator: " / ")

…如果可以的话,也可以制作gamename非可选。

game.genres.map(\.name).joined(separator: " / ")


推荐阅读