2017-06-14 85 views
0

我想在自定義類型數組中插入一個元素。但是我擺脫了索引錯誤。以下是我的代碼:在Swift 3.0中自定義類型數組插入崩潰

var newCGList = [TTCareGiverItem]() 
if let snapshotItems = snapshot.value as? [String:Any]{ 
    for (_, snapshotData) in snapshotItems { 
     let dict = snapshotData as? NSDictionary 
     if let cgList = dict?.value(forKey: "ul") as? NSDictionary { 
      for cg in cgList{ 
       let cgKey = cg.key as! String 
       for ctr in 0 ..< self.careGiverList.count{ 
       let key = self.careGiverList[ctr].id as String 
       if key == cgKey{ 
       let order: Int = Int(cg.value as! String)! 
       let aCG = self.careGiverList[ctr] 
       aCG.order = order 
       newCGList.insert(aCG, at: ctr) 
       break 
       } 
       } 
      } 
     } 
    } 

我缺少什麼?

+0

你需要使用的是'append(_ :)'not'insert(_:at)' –

+0

我需要在順序列表中插入append不起作用。 – TechBee

+0

@TechBee爲什麼你使用插入而不是追加? –

回答

1

newCGList在您嘗試插入元素時爲空。 不知道你爲什麼使用'newCGList.insert(aCG, at: ctr)',而是你可以使用'newCGList.append(aCG)'。

+0

我需要插入一個順序列表append不起作用。 – TechBee

+0

對第一個元素使用append,然後嘗試通過確保您沒有插入到外部索引來插入。 –

0

如果你需要你的項目是在一定的指數,但該列表的大小比所需要那麼大的折射率小,當然這是不可能的,你會得到錯誤(例如,在你的情況我猜測發生了什麼只是有時候這些元素會被添加到列表中,所以正因爲如此,您試圖插入下一個元素的索引將大於列表的大小,因此導致該錯誤。這種情況下,你應該只使用從int到你的項目的字典)。否則,如果所有重要的事情都是爲了他們的順序,那麼你可以做的是檢查列表的大小是否小於你試圖插入項目的索引。如果是,那麼只需將它追加到末尾