sergson
(sergsey)
1
Thread 1: Fatal error: Index out of range
what could be the problem why it can't call parsing twice in the code why the error??
import SwiftUI
import SwiftSoup
struct ContentView: View {
@State var textNews:String = ""
var body: some View {
VStack {
TextEditor(text: .constant(textNews))
Button(/*@START_MENU_TOKEN@*/"Button"/*@END_MENU_TOKEN@*/) {
parsing()
}
}
.padding()
}
func parsing() {
let defaults = UserDefaults.standard
do {
var myHTMLString = try String(contentsOf:URL(string: "https://alicoup.ru/currency/")!)
let htmlContent = myHTMLString
do {
let doc = try SwiftSoup.parse(htmlContent)
do {
let text1 = try doc.getElementsByClass("row my-1")
var AliWell = try text1.get(2).text()
AliWell = AliWell.replacingOccurrences(of: "Алиэкспресс", with: "")
var Bank = try text1.get(1).text()
Bank = Bank.replacingOccurrences(of: "Средний курс в обменных пунктах", with: "")
var WorldBank = try text1.get(0).text()
WorldBank = WorldBank.replacingOccurrences(of: "Финансовая биржа", with:"")
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd.MM.YYYY hh:mm:ss"
let dateString = dateFormatter.string(from: Date.init())
var sBank = defaults.string(forKey: "Bank")
if (sBank ?? "").isEmpty {sBank = "0"}
var sWorldBank = defaults.string(forKey: "WorldBank")
if (sWorldBank ?? "").isEmpty {sWorldBank = "0"}
var sAliWell = defaults.string(forKey: "AliWell")
if (sAliWell ?? "").isEmpty {sAliWell = "0"}
textNews = "Курс Aliexpress:\n\(AliWell) (\(sAliWell!))\n\nКурс в обменниках:\n\(Bank) (\(sBank!))\n\nКурс доллара:\n\(WorldBank) (\(sWorldBank!))\n\nПоследние обновление:\n\(dateString)"
defaults.set(AliWell, forKey: "AliWell")
defaults.set(WorldBank, forKey: "WorldBank")
defaults.set(Bank, forKey: "Bank")
}
} catch {
} catch {
}
} catch let error {
print("Error: \(error)")
}
do {
var myHTMLString = try String(contentsOf:URL(string: "https://dzen.ru/?yredirect=true")!)
let htmlContent = "\(myHTMLString)"
do {
let doc = try SwiftSoup.parse(htmlContent)
do {
let news1 = try doc.getElementsByClass("card-news-story__story-6T")
let news11:String = try news1.get(0).text()
let news12:String = try news1.get(1).text()
let news13:String = try news1.get(2).text()
let news14:String = try news1.get(3).text()
let news15:String = try news1.get(4).text()
print(news11)
textNews += "\n\n\(news11)\n\n\(news12)\n\n\(news13)\n\n\(news14)\n\n\(news15)"
}
} catch {
} catch {
}
} catch let error {
print("Error: \(error)")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}