2017-12-07 16 views
0

JSONネストされた配列のオプション要素のアンラッピングに問題があります。問題の要素には、「solo_competitive_rank」と「score」というラベルが付けられています。参考のために、あるコントローラのテーブルビューセルをクリックすると、これらの要素が新しいビューコントローラに表示されます。これは時々動作しますが、選択されたセルにこれらの値がないと、アプリケーションがクラッシュします。誰かがこれらの要素を適切にアンラップするのを助けてくれますか?オプションのJSON要素のクラッシュ解除アプリケーション

JSON構造体

struct PlayerStatsParent:Decodable{ 
let rankings: [PlayerStats] 
} 


struct PlayerStats:Decodable { 
let personaname: String? 
let score: Double? 
let solo_competitive_rank: Int? 
let avatar: String? 
} 

Display Viewを

override func viewDidLoad() { 
    super.viewDidLoad() 
    rankLabel.text = "\((playerRank?.solo_competitive_rank)!)" 
    scoreLabel.text = "\((playerRank?.score)!)" 
} 

答えて

2

私は、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) 
} 
+1

は、Intであるため、おそらくテキストに変換する必要があります。 :) –

+0

テキストに変換するにはどうしたらいいですか? –

+0

@ChrisSwinson - 私は文字列(スコア)で答えを更新しました。これはラベルとして設定する前に文字列に変換します。 – tylerSF

関連する問題