Извините, если об этом уже спрашивают, но я не нашел решения для этого. Я новичок в Swift, поэтому, пожалуйста, потерпите меня. Я не могу понять, почему я получаю ошибку Тема 1: Неустранимая ошибка: Индекс выходит за пределы . Я использовал тот же метод раньше при отображении TXT-файла, с которым у меня никогда не возникало проблем, так что это впервые. Я пытаюсь отобразить координаты в виде текстовых деталей с указанием даты и времени в виде текста в самих ячейках.
Date and Time
Latitude, Longitude
Нечто подобное выше (представьте, что в клетке)
Ниже приведен мой код для программы
import UIKit
import MapKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
//Array to store the list
var storeCoordinates = [String: String]()
var arrayClient = NSMutableArray()
var readings: [String] = [" "]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//Get path of where the file is
let path = Bundle.main.path(forResource: "gps_coords", ofType: "csv")
//Use filemanager to check if the file exist to avoid crashing if it doesn't exist
let fileMgr = FileManager.default
//Display the number of line counts we have
if fileMgr.fileExists(atPath: path!){
do {
let fulltext = try String(contentsOfFile: path!, encoding: String.Encoding.utf8)
readings = fulltext.components(separatedBy: "\n") as [String]
for i in 0..<readings.count{
let listData = readings[i].components(separatedBy: ";") as [String]
storeCoordinates["Latitude"] = "\(listData[0])"
storeCoordinates["Longitude"] = "\(listData[1])"
storeCoordinates["DateAndTime"] = "\(listData[2])"
arrayClient.add(storeCoordinates)
}
} catch let error as NSError {
print("Error: \(error)")
}
}
self.title = "Number of entries: \(arrayClient.count)"
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arrayClient.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellReuseIdentifier", for: indexPath)
let client = arrayClient[indexPath.row] as AnyObject
cell.textLabel?.text = "\(client.object(forKey: "DateAndTime")!)"
cell.detailTextLabel?.text = "\(client.object(forKey: "Latitude")!) \(client.object(forKey: "Longitude")!)"
return cell
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
}
Ошибка у меня на storeCoordinates["Latitude"] = "\(listData[0])"
Используя точки останова, он показывает, что значение Локатора не пусто вместе с Longitude и DateAndTime, но если я пытаюсь запустить приложение в симуляторе, оно выдает ошибку Поток 1: Фатальная ошибка: Индекс выходит за пределы . Пока не повезло, пытаясь понять, как это исправить. Если бы вы могли помочь мне разобраться, это бы много значило для меня. Пожалуйста и спасибо.