这个问题在这里已有答案:
我有一个名为list_of_songs
的字符串数组。这个数组有时可能是20,有时是1.数字是不可预测的。
我正在尝试,只使用其中的4项 - 如果它有超过4个元素。如果没有,那么使用其余的。
我的代码:
let prefix = list_of_songs.prefix(upTo: 4)
var result = [String]()
for i in prefix {
result.append(i)
}
结果:
有4个或更多元素。作品|有1或2个元素:
致命错误:数组索引超出范围
只需使用没有参数标签的prefix
:
let result = list_of_songs.prefix(4)
不同之处在于,对于prefix(upTo:)
,参数必须在数组中指定有效索引,而对于prefix(:)
,您需要指定要检索的元素数 - 它记录为
如果最大长度超过集合中的元素数,则结果将包含集合中的所有元素。
你可以实现如下,
let result = Array(list_of_songs.prefix(4))
要么
var result = [String]()
for (index, song) in list_of_songs.enumerated() {
if index > 3 { break }
result.append(song)
}
print(result)
要么
你可以删除不需要的Array
元素,如下所示,
if list_of_songs.count > 4 {
list_of_songs.removeSubrange(4...)
}
print(list_of_songs)