数日ぶりに使おうとすると配列が空になり「Fatal error: Can't form Range with upperBound < lowerBound」というエラーが出てしまいます
なにか仕様の変更があったのですか?
swift
1 2import UIKit 3import Foundation 4import SafariServices 5import WebKit 6 7let チャートの余分な分削除用:Int = 9 8 9 10 11var oo:[String] = []//52週高値用 12var todayStocks:[String] = [] 13var a:Int = 0 14var b = a - 1 15class ViewController: UIViewController { 16 17 18 @IBAction func ChartDo(_ sender: Any) { 19 showSafariVC(for: todayStocks[a]) 20 a = a + 1 21 b = a - 1 22 23 24 let counter = todayStocks.count 25 switch a { 26 case 0..<counter: 27 NowChart.text = String(oo[b]) 28 default: 29 NowChart.text = "Sorry! GameOver!" 30 } 31 } 32 33 override func viewDidLoad() { 34 super.viewDidLoad() 35 let urlString = "https://www.nasdaq.com/aspx/52-week-high-low.aspx" 36 37 guard let url = URL(string: urlString) else { return } 38 39 let task = URLSession.shared.dataTask(with: url) { 40 (data, response, error) -> Void in 41 if let urlContent = data { 42 let webContent:String! = String(data: urlContent, encoding: .utf8) 43 44 45 let regex = try! NSRegularExpression(pattern: "<a href=\"https://www.nasdaq.com/symbol/.*\">(.*)</a>", options: []) 46 let matches = regex.matches(in: webContent, options: [], range: NSRange(location: 0, length: (webContent as NSString).length)) 47 let result = matches.map { (webContent as NSString).substring(with: $0.range(at: 1)) } 48 49 let countResult = result.count - チャートの余分な分削除用 50 oo += result 51// 52 print(matches) 53 54//ここまで 〜〜〜〜〜〜〜〜〜〜〜〜〜 55 56 for str in oo[0...countResult]{ 57 let aa:String = "https://www.marketwatch.com/investing/stock/(str)/charts" 58 todayStocks.append(aa) 59 60 61 // 62 } 63 // print(todayStocks) 64 65 } 66 67 68 69 } 70 task.resume() 71 72 // 表示部各部 73 74 NowChart.text = "NowChart" 75 76 77 } 78 func showSafariVC(for url: String){ 79 guard let url = URL(string: url) else { 80 return 81 } 82 let safariVC = SFSafariViewController(url: url) 83 present(safariVC,animated: true) 84 print(a) 85 } 86 87 88} 89 90 91 92 93
回答2件
あなたの回答
tips
プレビュー