2014-12-07 2 views
1

연관 배열에서 "readerSession"을 가져 와서 변수에 넣으려고합니다. 이것이 제가 시도한 것입니다.Swift를 사용하여 연관 배열에서 값을 얻는 방법

코드

println(thevalue) 

{ 
    readerSession = 41; 
    tax = 7; 
    tax2 = 6; 
    taxName = GST; 
    taxName2 = PST; 
} 

반환 그래서 readerSession 지금은 그것의 연락을 취하는 얻을 수 있는지 볼 수 있습니다, (41)과 같다.

코드

println(thevalue["readerSession"]) 

옵션 (41)

을 반환 좋아 좋은, 내가 원하는 정확히, 지금은 변수에 넣어하려고합니다.

코드

var readerSession = thevalue["readerSession"] as? String ?? "0" 
println("READER SESSION \(readerSession) ") 

반환 READER 세션 0

가 왜 "0"??? "41"이어야합니다.

답변

1

"0"을 얻는 이유는 연관 배열에 저장된 값이 String이 아니기 때문에 Int이기 때문입니다. 따라서 String으로 캐스팅하면 캐스트가 null을 반환하므로 ??의 오른쪽이 튀어 나와 문자열이 0이됩니다.

이 같은 문제를 해결할 수 있습니다

var readerSession : AnyObject = thevalue["readerSession"] ?? "0" 
+0

을 근무를! 고맙습니다! –

+0

하지만이 방법은'readerSession'이 때로는 NSNumber이고 때로는 좋은 디자인이 될 수없는 NSString입니다. – newacct

+0

@newacct 동의합니다 - 이것은 주어진 디자인에 대한 유일한 해결 방법입니다. – dasblinkenlight

관련 문제