前提・実現したいこと
取得したJSONデータをTableviewに反映したいのですが、ビルド時に表題のエラーが出て落ちてしまいます。
発生している問題・エラーメッセージ
Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
該当のソースコード
Swift
1self.nameArray.append(name!) 2self.amountArray.append(amount!) 3self.taniArray.append(tani!) 4self.priceArray.append(price!)
全文ソースコード
GoogleDataSwift
1 2import Foundation 3class GoogleData { 4 5var name: String = "" 6var amount: String = "" 7var tani: String = "" 8var price: String = "" 9 10}
ViewController
1import Alamofire 2import UIKit 3import SwiftyJSON 4 5class ViewController: UIViewController, UINavigationControllerDelegate, UITableViewDelegate, UITableViewDataSource { 6 7 var googleData = GoogleData() 8 var nameArray = [String]() 9 var amountArray = [String]() 10 var taniArray = [String]() 11 var priceArray = [String]() 12 13@IBOutlet var tableView: UITableView! 14 15override func viewDidLoad() { 16 super.viewDidLoad() 17 18 tableView.delegate = self 19 tableView.dataSource = self 20 21 getData() 22 23 } 24 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 25 return nameArray.count 26 } 27 28 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 29 let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "Cell") 30 31 cell.textLabel?.text = self.nameArray[indexPath.row] 32 cell.detailTextLabel?.text = self.amountArray[indexPath.row] 33 cell.textLabel?.adjustsFontSizeToFitWidth = true 34 cell.detailTextLabel?.adjustsFontSizeToFitWidth = true 35 cell.textLabel?.numberOfLines = 1 36 cell.detailTextLabel?.numberOfLines = 1 37 cell.accessoryType = .checkmark 38 39 return cell 40 41 } 42 43func getData(){ 44 let text = "https://script.google.com/macros/s/AKfycbw1IzuulWfaxTtgsNS9Yi5iUNeBqBHy1XC-wV0IOBiAjpzsw98/exec" //取得したいURL 45 let url = text.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) 46 AF.request(url!, method: .get, parameters: nil, encoding: JSONEncoding.default).responseJSON { (response) in 47 48 print(response) 49 switch response.result{ 50 51 case .success: 52 53 JSON(response.data!).forEach { 54 print($0.1["name"].string as Any) 55 56 let json:JSON = JSON($0 as Any) 57 let name = json["name"].string 58 let amount = json["amount"].string 59 let tani = json["tani"].string 60 let price = json["price"].string 61 62 self.nameArray.append(name!) 63 self.amountArray.append(amount!) 64 self.taniArray.append(tani!) 65 self.priceArray.append(price!) 66 } 67 68 case .failure(let error): 69 print(error) 70 } 71 72 self.tableView.reloadData() 73 } 74 } 75 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 76 print("select - (indexPath)") 77 } 78 79 func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { 80 print("deselect - (indexPath)") 81 } 82}
試したこと
Codableを利用してみたり、強制アンラップをかけてみたのですが、エラー消えませんでした…
ツールのバージョン
Xcode : Version 11.0
Swift : Apple Swift version 5.1
ビルド結果
追記2
回答1件
あなたの回答
tips
プレビュー