Почему словарь Swift не является мостовым?

Словарь является мостовым типом, почему я могу переключаться со словаря Swift на NSDictionary, а не наоборот? (Ошибка компиляции: NSDictionary не конвертируется в "Словарь")

Согласно документу Apple:

Все объекты NSDictionary могут быть соединены со словарями Swift, поэтому компилятор Swift заменяет класс NSDictionary на [NSObject: AnyObject] при импорте API Objective-C.

import Foundation

var swiftDict = ["0": "zero"]

let nsDict:NSDictionary = swiftDict
let backToSwiftDict:Dictionary = nsDict

2 ответа

Это правильно, но вы должны выполнить безопасное приведение типов из NSDictionary в словарь

var swiftDict = ["0": "zero"]

let nsDict: NSDictionary = swiftDict
let backToSwiftDict: Dictionary = nsDict as Dictionary

... или вы можете преобразовать его обратно в словарь с полями, безопасными для типов...

var swiftDict = ["0": "zero"]
let nsDict:NSDictionary = swiftDict
let backToSwiftDict = nsDict as! [String:String]
Другие вопросы по тегам