dość prosty kawałek kodu"Nie można przypisać wartości typu 'string' wpisać 'AnyObject?'", Swift 3, Xcode 8 beta 6
var dict: [String: AnyObject] = [:]
dict["key"] = "value"
generuje następujący kompilacji Błąd
Cannot assign value of type 'String' to type 'AnyObject?'
Proste kontrole typu powiedzieć, że String
jest AnyObject
"value" is AnyObject // returns true
mogę zmienić AnyObject
do Any
i wszystko będzie działać
var dict: [String: Any] = [:]
dict["key"] = "value"
ale chcę zrozumieć, dlaczego pojawia się błąd? Czy String
nie jest już AnyObject
? Czy to błąd?
Dzięki za odpowiedź, wszystko było tak jak podejrzewałem. Ta fałszywa pozytywna kontrola jest jedynym powodem, dla którego zadałem to pytanie. – xinatanil
[Według Joe Groff] (https://bugs.swift.org/browse/SR-2420?focusedCommentId=17394&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-17394), is/as AnyObject' powinien zawsze odnieść sukces, ponieważ wszystko jest teraz mostkowane do 'AnyObject'. Wierzę, że dzieje się tak dlatego, że 'id' jest teraz połączony z Swift jako' Any', 'Any' może teraz zostać zmostkowany do' AnyObject' (dziwne, wiem). – Hamish
A tak, wygląda na to, że Swift ma problemy z typem AnyObject http://stackoverflow.com/questions/39033194/anyobject-not-working-in-xcode8-beta6 – xinatanil