前提・実現したいこと
TableViewにJSONデータを表示しています。
名前・数量・単位・値段を表示しているのですが、その中の値段だけを計算して原価計と書いてる場所に結果を表示させたいです。
cell選択時のコード
Swift
1 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 2 print("select - (indexPath)") 3 let cell = tableView.cellForRow(at:indexPath) 4 5 cell?.accessoryType = .checkmark 6 //まずgenkaTotalにpriceArrayを表示させる? 7 //priceArrayをInt型に変える 8 //選択したcellのpriceArrayをgenkaTotalに足していく 9 } 10 11 func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { 12 print("deselect - (indexPath)") 13 let cell = tableView.cellForRow(at:indexPath) 14 15 cell?.accessoryType = .none 16 //priceArrayをInt型に変える 17 //選択したcellのpriceArrayをgenkaTotalから引いていく 18 }
JSONデータ
Swift
1 func getData(){ 2 let text = "https://script.google.com/macros/s/AKfycbw1IzuulWfaxTtgsNS9Yi5iUNeBqBHy1XC-wV0IOBiAjpzsw98/exec" 3 let url = text.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) 4 AF.request(url!, method: .get, parameters: nil, encoding: JSONEncoding.default).responseJSON { (response) in 5 switch response.result{ 6 case .success: 7 // 通信成功時 8 guard let data = response.data else { 9 return 10 } 11 12 do { 13 let googleData = try JSONDecoder().decode([GoogleData].self, from: response.data!) 14 15 googleData.forEach { item in 16 self.nameArray.append(item.name) 17 self.amountArray.append("(item.amount)") 18 self.taniArray.append(item.tani) 19 self.priceArray.append("(item.price)") 20 } 21 } catch let error { 22 // JSON -> GoogleData にデコード失敗 23 print(error) 24 } 25 case .failure(let error): 26 // 通信の失敗 27 print(error) 28 } 29 self.tableView.reloadData() 30 } 31 32 }
試したこと
原価計に文字を表示させたかったので、
genkaTotal.text = cell.priceArray[indexPath].text
と書いてみたのですが、
Value of type 'UITableViewCell?' has no member 'priceArray'
と出てしまいました。配列を取り出して、Int型に変換する方法がわかりません…
変換できたらそれをselectedで判断して合計値出すのかな?と思ってますが合ってるのでしょうか…
ツールのバージョン
Xcode : Version 11.0
Swift : Apple Swift version 5.1
回答1件
あなたの回答
tips
プレビュー