У меня проблема с двумя кодами.Оба кода приводят к одному и тому же результату, когда он получил неправильные данные или данные равны нулю, происходит сбой приложения.Я пробовал несколько вещей, как "do {} catch {", но не работает.Я также не могу предсказать неправильную запись от пользователя.
ниже пример одного из кодов:
override func viewDidLoad() {
super.viewDidLoad()
let array = getSwiftArrayFromPlist(name: "LongRange")
let namePredicate = NSPredicate(format: "altitude = %@", TextField.text!)
let Coordinate = NSString(format:"%@",[array.filter {namePredicate.evaluate(with: $0)}[0]]) as String?
}
func getSwiftArrayFromPlist(name: String)->(Array<Dictionary<String,String>>){
let path = Bundle.main.path(forResource: name, ofType: "plist")
var arr : NSArray?
arr = NSArray(contentsOfFile: path!)
return (arr as? Array<Dictionary<String,String>>)!
}
func getDataforFuelConsumption(data:String)->(Array<[String:String]>){
let array = getSwiftArrayFromPlist(name: "LongRange")
let namePredicate = NSPredicate(format: "altitude = %@", data)
return [array.filter {namePredicate.evaluate(with: $0)}[0]] //<- Error appear here!!!! "Thread 1: Fatal error: Index out of range"
}
Спасибо