尝试将音乐项目附加到数组但超出范围错误Swift

问题描述

我有一个应用程序可以在本地打印出列表中所有用户的歌曲。

这是数组:

var mySongs: [MPMediaItem] = []

这是获取歌曲的方式:

self.mySongs = MPMediaQuery.songs().items ?? []

我想遍历 mySongs 数组并将其中的特定歌曲添加到 newArray

for songs in mySongs{
        if songs.title == "Actin Crazy"{
            newArray[counter] = songs
            counter+=1
        }
    }

但我收到此错误: 线程 1:致命错误:索引超出范围

我如何确定其超出范围的方式/位置以解决此问题?

解决方法

你不能通过说来附加到数组

newArray[counter] = ...

要了解原因,假设数组为空。那你会说

newArray[0] = ...

但是数组是空的。没有newArray[0]!因此,当应用程序运行时你会崩溃——出现超出范围的错误!任何时候用不存在的索引对数组进行下标都是非法的。

改为使用 newArray.append(...)。这就是它存在的原因。

但是,您的代码还有许多其他问题。特别是 MPMediaItem 的 title 是一个 Optional。您需要安全地打开包装才能使用它。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...