问题描述
我有一个应用程序可以在本地打印出列表中所有用户的歌曲。
这是数组:
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。您需要安全地打开包装才能使用它。