2014-07-10 3 views
2

일부 문자열, 배열 및 int를 값으로 가지는 Dictionary<String, Any>을 선언했습니다. String 키를 기반으로 한 값을 다시 가져 오려고하면 키에 의해 식별 된 값이 실제 Array인데도 Array, 으로 캐스팅 할 수 없습니다.사전에서 값 가져 오기 <String, Any>

let lColorValues = lTabBarDictionary[TabBarKey.tabBarColor] as Array; 

p.s. TabBarKey.tabBarColor

애플의 신속한 프로그래밍 책은 다른 종류의 객체를 저장 Array와 예를 제공하는 문자열입니다, 그들은 Dictionary에 대한 Array하지만를 위해 잘 작동하는 것 같다 객체를 다운 캐스트 as를 사용합니다.

내가 무엇을 놓쳤습니까? 그런 사전에 대한 가치를 얻는 방법? 나는 Array 대신 Array<String>를 사용하고, 마지막 줄에

class TabBarKey { 
    class var tabBarColor : String { 
     return "key" 
    } 
} 

let arr = ["1", "2", "3"] 

var lTabBarDictionary = Dictionary<String, Any>() 

lTabBarDictionary[TabBarKey.tabBarColor] = arr 

let val = lTabBarDictionary[TabBarKey.tabBarColor] as Array<String> 

:

답변

3

당신은 예를 들어, Array 보유 유형을 지정해야합니다. 물론 배열이 가지고있는 적절한 제네릭 타입을 사용하여 똑같은 일을해야한다.

놀이터에서 코드를 테스트하여 예상되는 배열을 인쇄합니다.

+0

나는 어리석은 짓을했다 :)) 물론 배열이어야합니다. 배열 및 배열이 있어야합니다. 감사합니다 – azimov

+1

그것은 바보가 아니에요 ... 새로운 언어, 일을 할 수있는 새로운 방법, 그래서 쉽고 정상적인 일들을 간과하는 일반 :) – Antonio

관련 문제