Используете ли вы Anyили AnyObjectзависит от вашего предполагаемого использования:
Если ваш словарь будет использоваться только в пределах Swift коды, то вы должны использовать , Anyпотому что ваши тип ( Int, Double, Float, String, Array, и Dictionary) не являются объектами.
Если вы будете передавать свой словарь подпрограммам Objective-C, которые ожидают NSDictionary, то вам следует использовать AnyObject.
Когда вы import Foundationили import UIKitили import Cocoa, можно объявить массив как [String: AnyObject], но в этом случае Swift обрабатывает ваш Int, Double, Floatлитералы , как NSNumber, ваши Strings как NSString, ваши Arrays как NSArrayи ваши словари , как NSDictionary, все из которых являются объекты. Словарь, использующийся AnyObjectв качестве типа значения, можно преобразовать NSDictionary, а словарь , использующийся Any- нет.
String,ArrayиDictionaryне являются классами, для них использования любого.