2017-05-19 70 views
-1

嘗試從coreData加載數組xputt2時,我不斷收到此錯誤。當我刪除有問題的行時,數據將完美打印,但一旦放回行就不會加載到陣列中。有誰知道我做錯了什麼?這是代碼。xcode。 swift3。 coredata。致命錯誤:索引超出範圍

do { 
     putt2Array = try managedObjectContext.fetch(fetchRequest) 
     print ("results count is", putt2Array.count) 


     var i=0 
      for record in putt2Array { 
       print(record.value(forKeyPath: "missed")! as! Double) 
       xputt2[i] = record.value(forKeyPath: "missed")! as! Double 
       i += 1 
      } 

    } catch let error as NSError{ 
     print("Could not fetch data. \(error), \(error.userInfo)") 
    } 

} 

回答

0

該錯誤解釋了問題,索引超出範圍,您將鍵入數組中的索引尚不存在。嘗試切換

xputt2[i] = record.value(forKeyPath: "missed")! as! Double 

xputt2.append(record.value(forKeyPath: "missed")! as! Double) 

您應該能夠去除i = 0和遞增i。另外,我建議刪除強制解包:

for record in putt2Array { 
    if let value = record.value(forKeyPath: "missed") as? Double { 
     xputt2.append(value) 
    } 
    } 
+0

感謝它完美地解決了這個問題真正有用的幫助。我知道它必須是非常簡單的東西,但我正在尋找錯誤的地方! – DavidGreen

+0

很高興能幫到你! –

0

數組的索引只能達到當前元素的數目。您可以使用xputt2[i]替換已存在但尚未添加新元素的元素。您可以使用xputt2.append將其添加到最後,或者如果要將其放置在陣列中的特定位置,則可以使用xputt2.insert

或者,因爲你只是改造現有的陣列,可以使用map方法做一個單行:

xputt2 = putt2array.map{ $0.value(forKeyPath: "missed")! as! Double } 
相關問題