довольно простой кусок кода«Невозможно присвоить значение типа„String“к типу 'AnyObject?», Swift 3, Xcode 8 бета 6
var dict: [String: AnyObject] = [:]
dict["key"] = "value"
генерирует следующий ошибка времени компиляции
Cannot assign value of type 'String' to type 'AnyObject?'
Простые проверки типа говорят мне, что String
является AnyObject
"value" is AnyObject // returns true
Я мог бы изменить AnyObject
к Any
и все будет работать
var dict: [String: Any] = [:]
dict["key"] = "value"
, но я хочу, чтобы понять, почему я получаю ошибку? Есть String
не более AnyObject
? Или это ошибка?
Спасибо за ответ, все было так же, как я подозревал. Эта ложноположительная проверка типа - единственная причина, по которой я задал этот вопрос. – xinatanil
[Согласно Джо Гроффу (https://bugs.swift.org/browse/SR-2420?focusedCommentId=17394&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-17394), ' is/as AnyObject' всегда должен преуспеть, так как теперь все мосты «AnyObject». Я считаю, что это связано с тем, что 'id' теперь подключен к Swift как' Any', 'Any' теперь может быть подключен к' AnyObject' (странно, я знаю). – Hamish
И да, похоже, что swift испытывает проблемы с проверкой типа AnyObject http://stackoverflow.com/questions/39033194/anyobject-not-working-in-xcode8-beta6 – xinatanil