展开可选 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 [重复]

使用可选参数的转义完成处理程序有时会使 Swift 崩溃

尝试解析 json 会使应用程序崩溃

由于该应用程序崩溃,字典得到 nil 值。在展开可选值时意外发现 nil

将模型保存到 Userdefaults 会使应用程序迅速崩溃 [重复]

UIViewController 中的集合视图可选展开崩溃