Используете ли вы 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
, ваши String
s как NSString
, ваши Array
s как NSArray
и ваши словари , как NSDictionary
, все из которых являются объекты. Словарь, использующийся AnyObject
в качестве типа значения, можно преобразовать NSDictionary
, а словарь , использующийся Any
- нет.
String
,Array
иDictionary
не являются классами, для них использования любого.