限制数组项

时间:2019-04-21 07:30:00

标签: swift

我有一个名为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个元素:

  

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

2 个答案:

答案 0 :(得分:3)

只需使用不带参数标签的prefix

let result = list_of_songs.prefix(4)

不同之处在于,对于prefix(upTo:),该参数必须在数组中指定有效索引,而对于prefix(:),则指定要检索的元素数-记录为

  

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

答案 1 :(得分:1)

您可以实现以下目标,

let result = Array(list_of_songs.prefix(4))

OR

var result = [String]()
for (index, song) in list_of_songs.enumerated() {
    if index > 3 { break }
    result.append(song)
}
print(result)

OR

您可以如下删除不需要的Array元素,

if list_of_songs.count > 4 {
    list_of_songs.removeSubrange(4...)
}
print(list_of_songs)