Я наткнулся на ошибку в моем приложении:IOS - Index Out Of Range
fatal error: Index out of range (lldb)
Я думаю, что может иметь представление о том, что проблема есть, однако, не имеют понятия о как исправить ошибку.
Я считаю, из-за того, что я использую заголовки разделов, это вызывает проблему. У меня есть доказательства, читающие кодировку, а также попытку исправить ее и выполнить поиск в Интернете. Ниже я опубликовал образец моего кода (не хотел включать его все, так как он содержит несколько сотен строк кода).
По существу, я использую TableViewController в сочетании с SWReveal, где пользователь выбирает параметр и появляется текст.
class BackTableVC: UITableViewController {
struct Brands {
var sectionName : String!
var sectionBrands : [String]!
}
struct ThirdView {
var ThirdViewArray = [String]()
}
var brandArray = [Brands]()
var ThirdArray = [ThirdView]()
var brandAnswerArray = [String]()
override func viewDidLoad() {
brandArray = [
Brands(sectionName: "Bugatti", sectionBrands: ["EB 110","Veyron"])]
ThirdArray = [ThirdView(ThirdViewArray: ["EB 110","Veyron"])]
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return brandArray[section].sectionBrands.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell!
cell.textLabel?.text = brandArray[indexPath.section].sectionBrands[indexPath.row]
return cell
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let DestVC = segue.destinationViewController as! CarDetailsVC
let indexPath : NSIndexPath = self.tableView.indexPathForSelectedRow!
let ThirdAnswerArray : ThirdView
ThirdAnswerArray = ThirdArray[indexPath.row]
DestVC.brandAnswerArray = ThirdAnswerArray.ThirdViewArray
DestVC.FirstString = brandAnswerArray[indexPath.row]
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return brandArray.count
}
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return brandArray[section].sectionName
}
}
import Foundation
struct ThirdView {
var ThirdViewArray = [String]()
}
class CarDetailsVC: UIViewController {
var FirstString = String()
var brandAnswerArray = [String]()
@IBOutlet var Label: UILabel!
override func viewDidLoad() {
Label.text = FirstString
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
_ = segue.destinationViewController as! CarDetailsVC
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
My ThirdView struct и CarDetailsVC находятся в отдельных файлах .swift.
линия, которая дает мне горе:
DestVC.FirstString = brandAnswerArray[indexPath.row]
P.S. если бы я должен был сделать это:
DestVC.FirstString = "Hello World"
Hello World отображается при выборе только первый вариант, то код/приложение разбивает я получаю один и тот же «индекс вне диапазона» ошибка на линии:
ThirdAnswerArray = ThirdArray[indexPath.row]
Я понимаю, что вы говорите, однако мой ThirdArray состоит из двух значений и есть две ячейки. Разве этого недостаточно? Ну, я знаю, что ответ из-за приложения продолжает рушиться. Как назначить значения для brandAnswerArray? Что было бы лучше всего? – TheNoviceProgrammer