展开可选 JSON 元素会使应用程序崩溃 [重复]
Posted
技术标签:
【中文标题】展开可选 JSON 元素会使应用程序崩溃 [重复]【英文标题】:Unwrapping Optional JSON Element Crashes App [duplicate] 【发布时间】:2017-12-07 01:56:35 【问题描述】:我在解开 JSON 嵌套数组中的可选元素时遇到问题。有问题的元素被标记为“solo_competitive_rank”和“score”。作为参考,当单击一个控制器中的表格视图单元格时,这些元素应显示在新的视图控制器中。 While this works sometimes, when a cell that is selected does not have these values, the app crashes.有人可以帮我正确解开这些元素吗?
JSON 结构
struct PlayerStatsParent:Decodable
let rankings: [PlayerStats]
struct PlayerStats:Decodable
let personaname: String?
let score: Double?
let solo_competitive_rank: Int?
let avatar: String?
显示视图
override func viewDidLoad()
super.viewDidLoad()
rankLabel.text = "\((playerRank?.solo_competitive_rank)!)"
scoreLabel.text = "\((playerRank?.score)!)"
【问题讨论】:
【参考方案1】:我建议将每个标签包装在 if 语句中。像这样:
if let soloRank = playerRank?.solo_competitive_rank as? Int
rankLabel.text = String(soloRank)
if let score = playerRank?.score as? Double
scoreLabel.text = String(score)
【讨论】:
应该将其转换为文本,因为它是一个 Int。 :) 如何将其转换为文本? @ChrisSwinson - 我用字符串(分数)更新了答案。这将在将其设置为标签之前将其转换为字符串。以上是关于展开可选 JSON 元素会使应用程序崩溃 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Swift 错误 - 致命错误:在展开可选值时意外发现 nil [重复]
由于该应用程序崩溃,字典得到 nil 值。在展开可选值时意外发现 nil