Se você usa Any
ou AnyObject
depende do uso pretendido:
Se o seu dicionário será usado apenas no código Swift, então você deve usar Any
porque 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 Foundation
ou import UIKit
ou import Cocoa
, é possível declarar a matriz como [String: AnyObject]
, mas neste caso Swift está tratando o seu Int
, Double
, Float
literais como NSNumber
, seus String
s como NSString
, seus Array
s como NSArray
, e seus dicionários como NSDictionary
, todos os quais são objetos. Um dicionário usando AnyObject
como tipo de valor é conversível em NSDictionary
, mas um usando Any
não é.
String
,Array
eDictionary
não são classes, para esses use Qualquer.