Я начинаю с Swift 3 прямо сейчас, немного поздно ... Однако, пока Swift 2.2 некоторые Swift типы значений были автоматически мостиками соответствующих ссылочных типов фундамента, таких как String
к NSString
, Dictionary<>
к NSDictionary
, и так далее. Похоже, что это автоматическое мостовое соединение было удалено в Swift 3.
Бывают случаи, когда поворот [String : AnyObject]
в [String : Any]
имеет смысл, в других - нет, в зависимости от того, что вы делаете. В моем текущем случае, где мне нужны ссылочные типы, это не так.
Поэтому я решить проблему, запрашивая явные мостики, литье в AnyObject
:
var dictionary: [String : AnyObject] = [:]
dictionary["valueType"] = "Value Type" // Error
dictionary["referenceType"] = "Reference Type" as AnyObject // OK
Для справки:
let text = "Text"
let asAny = text as Any
let asAnyObject = text as AnyObject
let asNSString: NSString = text as NSString
type(of: text) // Prints String.Type
type(of: asAny) // Prints String.Type
type(of: asAnyObject) // Prints _NSContiguousString.Type
type(of: asNSString) // Prints _NSContiguousString.Type
как '' someUser определенно? –