swiftはまだまだ素人です。
ちょっとしたデータ管理アプリを作っています。
JSONデータを読み込んでCoredataを使って溜め込み(Entity)、そのデータを読み込んでラベルやテキストフィールドに初期値としてセットしています。
swift
1 2class TableViewCell: UITableViewCell { 3 4@IBOutlet weak var x: UITextField! 5@IBOutlet weak var y: UITextField! 6@IBOutlet weak var total: UILabel! 7 8func Calculation(Item: Entity) { 9 x.text = Item.cell1?.stringValue 10 y.text = Item.cell2?.stringValue 11 total.text = Item.total.stringValue 12 13} 14}
元となったデータはこんな構造をしています。これを、Entityというデータモデルの中に保存しています。
Json
1{ "Cells": [ 2 { "cell1" : 250, 3 "cell2" : 250, 4 "total" : 500 5 }, 6 { "cell1" : 300, 7 "cell2" : 300, 8 "total" : 600, 9 }, 10 { "cell1" : 700, 11 "cell2" : 0, 12 "total" : 700 13 } 14 . 15 . 16 . 17 ] 18} 19 20
このテキストフィールドの数字を変更すると、totalの数字がxとyの和になるようにするというのが目標です。
いずれもデータ型はDecimal型です。
ためしたこと
swift
1 2 private var ItemRec: [Entity] = [] 3 4 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 5 //再利用するセル 6 let cell: TableViewCell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell 7 cell.Calculation(Item: ItemRec[indexPath.row]) 8 9 //テキストフィールドの中の文字が変わったとき、ラベル「total」の中身がxとyの和である変数totalになるということをしようとした。 10 if x.text != ItemRec[indexPath.row].cell1?.stringValue || cell.y.text != ItemRec[indexPath.row].cell2?.stringValue { 11 var total: Int? 12 total = Int(cell.x.text!) + Int(cell.y.text!) 13 cell.total.text = "(total)" 14 } 15 16 return cell 17 18} 19
しかし、このように記述すると
Expression type '@lvalue String?' is ambiguous without more context
というようなエラーが表示されます。
拙い質問で申し訳ありません。宜しくお願い致します。
補足
作業環境はSwift4
対象OSはiOS12
Xcode10.2.1
となっています。
回答1件
あなたの回答
tips
プレビュー