2017-10-23 10 views
0

JSONデータを解析してQuestionに割り当てると、結果の個々のメンバーを印刷しようとしています。構造体の個々の値にアクセスするには?

struct Question: Decodable 
{ 
    let response_code: Int 
    let results: [Results] 
} 

struct Results: Decodable 
{ 
    let category: String 
    let question: String 
    let correct_answer: String 
    let incorrect_answers: [String] 
} 

私が使用してみました:

print(question.results) 

をしかし、私は得る:

[Trivia_Game.Results(category: "Entertainment: Music", question: "Which of the following bands is Tom DeLonge not a part of?", correct_answer: "+44", incorrect_answers: ["Box Car Racer", "Blink-182", "Angels & Airwaves"])] 

は、どのように私は、このような "カテゴリ" や "質問" などの個々のメンバーにアクセスできますか?

答えて

1

配列を列挙しなければならないあなたがそうのように、最初のアクセスにquestion.resultsの個々の要素を持っているでしょう:

question.results[n] // where n represents a valid array index number 

そしての特定のプロパティにアクセスするにはその個々のResults構造体の場合、他の構造体のプロパティの値にアクセスするのと同じ方法で行います。あなたがResults構造のcategoryメンバーの値を取得したい場合たとえば、あなたはこれを行うだろう。そして、

question.results[n].category 

とを再度印刷その特定のメンバーの値(したい場合は、使用して一例としてcategoryメンバー)、あなたはこれを行うだろう:あなたは、あなたが使用することができ、question.results配列にResults構造の各々についてcategoryメンバーの値を印刷したい場合は、今すぐ

print(question.results[n].category) 

をforループのように:

for result in question.results { 
    print(result.category) 
} 

希望に役立ちます。

+0

ありがとうございます。クイックフォローアップの質問、私はURLSession.shared.dataTaskの外の要素にアクセスしようとしています(:url)。私は変数を外部に作成し、それを渡そうとしましたが、動作しません。 – Keith

+0

スウィフトのJSONでの作業に関する知識は非常に限られていますが、何を意味しているのか分かりませんので、質問するのに最適な人ではないかもしれません。 https://developer.apple.com/documentation/foundation/urlsession/1411554-datataskまたはhttps://developer.apple.com/documentation/foundation/urlsession – liamnickell

+0

ありがとうございます!理解した。 – Keith

1

resultsは配列です。あなたは

let results = question.results 
for result in results { 
    print(result.category, result.question) 
} 

または

question.results.forEach { print($0.category, $0.question) } 
+0

ありがとうございます。クイックフォローアップの質問、私はURLSession.shared.dataTaskの外の要素にアクセスしようとしています(:url)。私は変数を外部に作成し、それを渡そうとしましたが、動作しません。 – Keith

+0

'dataTask(with:url)'は非同期で動作します。完了ブロックは後で返されます。 – vadian

+0

大丈夫です。私はそれを理解することができました。ありがとうございました! – Keith

関連する問題