Error al tratar de acceder a miembros de Array of AnyObject dentro de un Diccionario – ¿Hay alguna forma de desenvolverlo?

Tengo un dictionary configurado como:

var jDict = Dictionary<String, AnyObject[]>() 

Donde las matrices son una colección de botones personalizados (JunkButton) o tags (JunkLabels).

Tengo un problema al tratar de acceder a los miembros de las matrices contenidas en el Diccionario de la siguiente manera:

 let thisArray = jDict[key] var aButton = thisArray[0] //Gives error: 'AnyObject[]? does not have a member named 'subscript' 

Puedo evitar esto abatiendo todo el set de la siguiente manera:

 if let aArray = thisArray as? JunkButton[]{ var aButton = aArray[0] } 

Esto parece muy engorroso, especialmente si estoy seguro de saber de qué tipo se compone la matriz de antemano. ¿Hay alguna forma de lanzar esteArray cuando se crea que me permita extraer sus elementos sin desenvolverlos cada vez?

Dictionary siempre te da valor Optional .

Tu código es así

 let thisArray : Optional<AnyObject[]> = jDict[key] 

Debe desenvolverlo para get un valor no opcional.

 let thisArray = jDict[key]! // thisArray is AnyObject[] 

Realmente no deberías usar un dictionary para esto. Swift hace que sea muy fácil usar estructuras personalizadas o classs en lugar de dictionarys:

 struct JunkItems { var buttons: [JunkButton] = [] var labels: [JunkLabel] = [] } 

Entonces puedes acceder a esos elementos como este sin abatir:

 for button in junkItems.buttons { // ... } 

O:

 if let button = junkItems.buttons[0] { // ... } 

Btw, la notación de matriz [JunkButton] es nueva en beta 3.