Swift 限制数组项

Swift 限制数组项,swift,Swift,我有一个字符串数组,叫做歌曲列表。这个数组有时可能是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个元素: 致命错误:数组索引超出范围 您可以通过以下

我有一个字符串数组,叫做歌曲列表。这个数组有时可能是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个元素:

致命错误:数组索引超出范围


您可以通过以下方式实现:

let result = Array(list_of_songs.prefix(4))
if list_of_songs.count > 4 {
    list_of_songs.removeSubrange(4...)
}
print(list_of_songs) 

您可以删除不需要的数组元素,如下所示:

let result = Array(list_of_songs.prefix(4))
if list_of_songs.count > 4 {
    list_of_songs.removeSubrange(4...)
}
print(list_of_songs) 
只需使用不带参数标签的前缀:

let result = list_of_songs.prefix(4)
不同之处在于,对于prefixupTo:参数必须指定数组中的有效索引,而对于prefix:则指定要检索的元素数-记录为

如果最大长度超过集合中的元素数,则结果将包含集合中的所有元素


“结尾必须是集合的有效索引。”限制数组项与在数组前面加前缀不同…@ielyamani我认为标题并不重要,只要问题正文本身简短。这里的结果是数组片段,而不是[String]