Se você usa Anyou AnyObjectdepende do uso pretendido:
Se o seu dicionário será usado apenas no código Swift, então você deve usar Anyporque seus tipos ( Int, Double, Float, String, Array, e Dictionary) não são objetos.
Se você for passar seu dicionário para rotinas Objective-C que esperam um NSDictionary, então você deve usar AnyObject.
Quando você import Foundationou import UIKitou import Cocoa, é possível declarar a matriz como [String: AnyObject], mas neste caso Swift está tratando o seu Int, Double, Floatliterais como NSNumber, seus Strings como NSString, seus Arrays como NSArray, e seus dicionários como NSDictionary, todos os quais são objetos. Um dicionário usando AnyObjectcomo tipo de valor é conversível em NSDictionary, mas um usando Anynão é.
String,ArrayeDictionarynão são classes, para esses use Qualquer.