我正在做一个在线音乐流的项目。
我有一个名为Song的对象数组-该Song数组中的每首歌曲都有SoundCloud中的URL。
快速枚举每首歌曲,然后调用SoundCloud Resolve API以获取每首歌曲的直接流URL。并将每个直接网址存储到一个数组中并加载到我的播放器中。
这似乎很容易,但是#2步骤是异步的,因此每个直接URL都可以存储到错误的数组索引中。我正在考虑使用Insert AtIndex而不是append,所以我在Playground中创建了一个示例代码,导致我所有的想法都使直接URL的存储保持其顺序,但无法成功进行。
var myArray = [String?]()
func insertElementAtIndex(element: String?, index: Int) {
if myArray.count == 0 {
for _ in 0...index {
myArray.append("")
}
}
myArray.insert(element, atIndex: index)
}
insertElementAtIndex("HELLO", index: 2)
insertElementAtIndex("WORLD", index: 5)
我的想法是在此操场代码中,它当然会产生错误,最后,我的问题是:使用此插入atIndex的正确方法是什么?
这行:
if myArray.count == 0 {
第一次运行时仅被调用一次。使用它来使数组长度至少达到您要添加的索引:
var myArray = [String?]()
func insertElementAtIndex(element: String?, index: Int) {
while myArray.count <= index {
myArray.append("")
}
myArray.insert(element, atIndex: index)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句