2017-12-30 4 views
0

방금 ​​JSON에 익숙해지기 시작했습니다. JSON을 전달하여 초기화하는 클래스 객체가 있습니다. 이 객체는 비어있을 수있는 배열을 가지고 있으므로 값을 검사해야합니다. 지금까지 나는 시도하고있다 :Swift에서 json의 배열에 선택적 요소를 추가합니다.

init(json: JSON) { 
    id = json["id"].string 
    type = json["type"].string 
    text = json["text"].string 
    answer = json["answer"].string 
    format = json["format"].string 
    answeredBy = [] 

    if let answeredByjson = json["answeredBy"].array { 
     for (_, userDict) in answeredByjson { 
      if let userDict = userDict as? [String : Any] { 
       answeredBy.append(JSON(User(dictionary: userDict))) 
      } 
     } 
    } 
} 

배열의 요소는 다른 개체 (사용자)를 초기화하는 데 사용해야하는 사전이다. 내가 받고있는 오류는 다음과 같습니다.

표현 유형 '[JSON]'이 (가) 더 많은 문맥없이 모호합니다.

코드를 어떻게 업데이트합니까?

내 JSON입니다 :

{   
    "answer" : "rachel", 
     "answeredBy" : { 
     "j1K4WXbOFRXfm3srk9oMtZJ8Iop2" : { 
      "email" : "an email", 
      "pictureURL" : "a URL", 
      "uid" : "j1K4WXbOFRXfm3srk9oMtZJ8Iop2", 
      "name" : "a name" 
     }, 
     "vtYlmyerugedizHyOW6TV847Be23" : { 
      "email" : "an email", 
      "pictureURL" : "a URL", 
      "uid" : "vtYlmyerugedizHyOW6TV847Be23", 
      "name" : "Rusty Shakleford" 
     } 
     }, 
     "format" : "field", 
     "id" : "1", 
     "type" : "text", 
     "text" : "In a foot race, Jerry was neither first nor last. Janet beat Jerry, Jerry beat Pat. Charlie was neither first nor last. Charlie beat Rachel. Pat beat Charlie. Who came in last?" 
    } 
+0

어떤 줄이 정확하게 나와 있습니까? 오류가 발생 했습니까? 'JSON' (게시 된 코드의 데이터 유형을 참조하고 있습니다)이란 무엇입니까? – rmaddy

+0

@rmaddy 아마 SwiftyJSON –

+0

죄송합니다, 예. SwiftyJSON을 사용하고 있습니다. – Sente

답변

0
if let answeredByjson = json["answeredBy"].array { 
    ... 
} 

배열 [JSON]을 생산하지만, 당신은 사전 [String: JSON]을 생산하는 기대합니다.

표현 유형 '[JSON]가'모호

더 상황

없이 사전 생성하려면 :

if let answeredByjson = json["answeredBy"].dictionary { 
    ... 
} 

그것은 당신이 그것을 기대하지 않는다 당신이받을 이유입니다 사전 [String: JSON]을 생성하면이 줄은 의미가 없습니다.

for (_, userDict) in answeredByjson { 
관련 문제