2017-10-23 19 views
0

JSON 데이터를 구문 분석하고 Question에 할당 한 후 결과의 개별 구성원을 인쇄하려고합니다.구조체의 개별 값에 액세스하는 방법?

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"])] 

가 어떻게 같은 "카테고리"또는 "질문"으로 개별 멤버에 액세스 할

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] 
} 

나는 사용하여 시도?

답변

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 외부의 요소에 액세스하려고합니다 (with : url). 변수를 외부에 생성했지만 전달하려고 시도했지만 작동하지 않습니다. – Keith

+0

스위프트 (Swift)에서 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 외부의 요소에 액세스하려고합니다 (with : url). 변수를 외부에 생성했지만 전달하려고 시도했지만 작동하지 않습니다. – Keith

+0

'dataTask (with : url)'은 비동기 적으로 작동합니다. 완료 블록은 나중에 반환됩니다. – vadian

+0

오케이. 나는 그것을 알아낼 수 있었다. 고맙습니다! – Keith

관련 문제