Почему словарь 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]