Swiftで解析したJSON応答が[String:Any]という1つの辞書セットになっています。私はそれが値のために各キーをチェックしようとしている、そしてSteamFriendオブジェクトの作成に渡された変数としてその値を追加します。辞書キーから値を抽出してオブジェクトに結合する
for (key, value) in level3 {
var avatar:URL!
var personaname:String = ""
var personastate:Int = 0
var steamid:String = ""
if key == "avatar" {
if let avatarAsString = value as? String {
let avatarAsURL = URL(string: avatarAsString)
avatar = avatarAsURL
}
} else if key == "personaname" {
if let personanameAsString = value as? String {
personaname = personanameAsString
}
} else if key == "personastate" {
if let personastateAsInt = value as? Int {
personastate = personastateAsInt
}
} else if key == "steamid" {
if let steamidAsString = value as? String {
steamid = steamidAsString
}
}
let createSteamFriend = SteamFriend(avatar: avatar, personaname:
personaname, personastate: personastate, steamid: steamid)
}
と私はすぐに「オブジェクトをアンラップしながら、予想外にnilを見つけ、」旨createSteamFriendライン上のエラーを取得し、上記のコードを実行するとSteamFriendためのクラスが
class SteamFriend {
var avatar: URL
var personaname: String
var personastate: Int
var steamid: String
init (avatar:URL, personaname:String, personastate: Int, steamid:String) {
self.avatar = avatar
self.personaname = personaname
self.personastate = personastate
self.steamid = steamid
}
}
です。私は上の各オプションのキャストに対してprintステートメントを実行しました。そして、それらがすべて戻り値であることを知っています。
私のコードのロジックに欠陥があると確信しています。 SteamFriendオブジェクトを作成する適切な方法を理解することができません。
'let createSteamFriend = SteamFriend(...)'行にブレークポイントを置き、値を確認してください。また、私はあなたがループの外側(後)にその行をし、var宣言を外側に置くことを望むと思います(foorループの前)。 'SteamFriend(avatar:personaname:personastate:steamid:)'のコードは何ですか? – Larme
@larme SteamFriendクラスを含むように今すぐ答えを更新します。 –