特定索引处的Swift插入元素

时间:2016-08-14 13:53:20

标签: ios swift

我正在做一个有在线音乐流的项目。

  1. 我有一个名为歌曲的对象数组 - 该歌曲数组中的每首歌都有一个来自SoundCloud的网址。

  2. 快速枚举每首歌曲,然后调用SoundCloud Resolve API 以获取每首歌曲的直接流网址。并将每个直接URL存储到一个数组中并加载到我的播放器。

  3. 这看起来非常简单,但#2步骤是异步的,因此每个直接URL都可以存储到错误的数组索引中。我正在考虑使用插入AtIndex 而不是追加,所以我在 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 的正确方法是什么?

3 个答案:

答案 0 :(得分:30)

使用Swift 3非常容易:

// Initialize the Array
var a = [1,2,3]

// Insert value '6' at index '2'
a.insert(6, atIndex:2)

print(a) //[1,2,6,3]

答案 1 :(得分:20)

这一行:

if myArray.count == 0 {

仅在第一次运行时被调用一次。使用此方法将数组长度至少设置为您要添加的索引:

var myArray = [String?]()

func insertElementAtIndex(element: String?, index: Int) {

    while myArray.count <= index {
        myArray.append("")
    }

    myArray.insert(element, atIndex: index)
}

答案 2 :(得分:2)

swift 4

func addObject(){
   var arrayName:[String] = ["Name0", "Name1", "Name3"]
   arrayName.insert("Name2", at: 2)
   print("---> ",arrayName)
}

Output: 
---> ["Name0","Name1", "Name2", "Name3"]