ios - 如何遍历数组并对最后一个索引做一些不同的事情?
问题描述
所以,我有一个Genre
对象数组,其中包含我想要包含值的name
属性。Strings
UILabel.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'
用最后一个元素做一些不同的事情的逻辑是什么?
解决方案
因为您没有使用足够的问号,所以编译器认为您使用的是Optional.map而不是Array.map。
你可以得到你想要的结果,像这样:
game?.genres?.compactMap(\.name).joined(separator: " / ")
…但是你使用了太多的选项。只是使genres
非可选。数组可能已经为空。它也不需要是nil
。
game?.genres.compactMap(\.name).joined(separator: " / ")
…如果可以的话,也可以制作game
和name
非可选。
game.genres.map(\.name).joined(separator: " / ")
推荐阅读
- react-admin - AutocompleteArrayInput 如何处理 react-admin 中的长选项列表?
- java - 使用 Jackson ObjectMapper 将 POJO 转换为 Dynamo AttributeValues 映射
- javascript - 在 Spotfire Mods 中,作为阅读器的一部分,我可以确定数据视图中发生了什么变化吗?
- javascript - Addin Word:Microsoft 可以为 VB 提供但使用 Office Javascript API 的 Shape 对象是否有替代方法?
- javascript - 通过对象数组过滤,javascript
- google-cloud-platform - 数天无法访问笔记本实例
- python - 使用包含特定键/值对的多个字典在 pyspark 数据帧上执行 regex_replace 而无需循环
- c++ - 使用有状态分配器持续清除、填充和交换 2 个容器
- r - 总是选择列表中的第一个元素
- micronaut - 未加载 Micronaut GCP 机密