2015-08-29 4 views
2

Я пытаюсь заполнить массив с числами с увеличением 0,1 каждого типа: [0.1,0.2,0.3 ...]Swift - фатальная ошибка: Индекс массива вне диапазона

Этот код дает мне ошибка: fatal error: Array index out of range . Что мне не хватает? Я что-то признаю что-то не так.

Я сохраню его в структуре типа Double.

Мой код

import UIKit 

class PrecoDomicilioViewController: UIViewController,UIPickerViewDelegate, UIPickerViewDataSource{ 

@IBOutlet var euros: UIPickerView! 

var pickerData:[Double] = [] 


override func viewDidLoad() { 
    super.viewDidLoad() 

    euros.delegate = self 
    euros.dataSource = self 




    for var i = 0; i <= 200; i++ 
    { 
     pickerData[i] += 0.1 
    } 

} 

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
return 1 
} 

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 

    return pickerData.count 
} 

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! { 

    return "\(pickerData[row])" 
} 

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    restaurante.portes = pickerData[row] 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 


} 
} 

UPDATE: Наконец сделал это, но есть это странное число между 6 и 10.

enter image description here enter image description here

+0

Что линия делает ошибки происходят на? – zaph

+0

pickerData [i] + = 0.1 –

+1

Вам действительно нужен отдельный вопрос. Подсказка: числа с плавающей запятой не могут точно представлять большинство десятичных чисел (не целое число), это то, что вы видите здесь. Это проблема при смене баз, здесь от базы 10 до базы 2, которую использует Double. Для точных десятичных чисел, например, для денег и калькуляторов, используйте 'NSDecimalNumber'. – zaph

ответ

2

Вы не можете добавить элементы в массив Swift с индексом оператора, вам нужно использовать ap ПЭНД.

NOTE You can’t use subscript syntax to append a new item to the end of an array.”

Выдержки От: Apple Inc. «The Swift Programming Language (Swift 2). Бета-» интерактивные книги. https://itun.es/us/k5SW7.l

Использование append(), примеры:

shoppingList.append("Flour") 
pickerData.append(0.1) 
+0

Как заполнить с помощью добавления? –

+0

Обновленный ответ. – zaph

+0

Решил мой вопрос. На других языках мы просто используем + =. Спасибо. –

Смежные вопросы