swift初心者です。
下記のようなコードを書いていたらエラーになりました。
nill合体演算子"??"を使って、取得できた値(Int?型)をStringに変換してtextに表示したいです。
swift
1class TestClass:XMLMappable{ 2 var comment: String? 3 var ava_mon: Int? 4 (略) 5} 6 7class ResultViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, XMLParserDelegate { 8 @IBOutlet weak var comment: UITextField! 9 @IBOutlet weak var ava_mon: UITextField! 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 request() 13 } 14 15 func request() { 16 if let url = URL(string: "https:xxxxxxx") { 17 let request = URLRequest(url: url) 18 let task: URLSessionTask = URLSession.shared.dataTask(with: request, completionHandler: { data, response, error in 19 do { 20 let xmlDictionary = try XMLSerialization.xmlObject(with: data) as? [String: Any] 21 let xmlResponse = XMLMapper<TestClass>().map(XMLObject: xmlDictionary) 22 23 self.comment.text = xmlResponse?.comment ?? "" 24 self.ava_mon.text = String(xmlResponse?.ava_mon) ?? ""// ここでエラー 25 } catch { 26 print("Serialization error occurred: (error.localizedDescription)") 27 } 28 }) 29 // 通信開始 30 task.resume() 31 } 32 }
エラーは次のとおりです。
Type of expression is ambiguous without more context
回避するために一旦別の変数に入れてnilチェックをしようかと思ったのですが、一行でやる方法はないのかと思い質問させていただきました。
この辺のサイトを参考にしています。
https://fukatsu.tech/optional-swift
必要と思われるコードを載せました。XMLでレスポンスが帰ってくるWebAPIを呼び出して表示する処理です。
XMLMapperというライブラリを利用しています。
https://github.com/gcharita/XMLMapper
XMLをオブジェクトにマップしてくれるライブラリです。
xmlResponseは取得できていて、一行上のcommentは正常に表示されます。
回答2件
あなたの回答
tips
プレビュー