Swift2 无法将NSMutableDictionnary强制转换为[String:AnyObject]
我将转到Swift 2.1,这是一段管理持久性CoreData的代码。尽管我遇到一个奇怪的错误,告诉我不能将NSMutableDictionnary转换为[String:AnyObject],这是我不理解的Swift2 无法将NSMutableDictionnary强制转换为[String:AnyObject],swift2,Swift2,我将转到Swift 2.1,这是一段管理持久性CoreData的代码。尽管我遇到一个奇怪的错误,告诉我不能将NSMutableDictionnary转换为[String:AnyObject],这是我不理解的 do { try coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: options) } catch var provid
do {
try coordinator!.addPersistentStoreWithType(NSSQLiteStoreType,
configuration: nil, URL: url, options: options)
} catch var providedError as NSError {
coordinator = nil
// Report any error we got.
let dict = NSMutableDictionary()
dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
dict[NSLocalizedFailureReasonErrorKey] = failureReason
dict[NSUnderlyingErrorKey] = providedError
let error = NSError(domain: "SOME_ERROR_DOMAIN", code: 9999,
userInfo: dict as! [String : AnyObject]) // <--- HERE IS THE WARNING
} catch {
fatalError()
}
警告信息:
从“NSMutableDictionary”转换为不相关类型“[String:AnyObject]”总是失败
我将通过直接使用Swift词汇表来解决这个问题,但我想知道为什么会出现这样的问题。只需在核心数据模板中使用Apple建议的代码即可
let dict = [String: AnyObject]()
dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
dict[NSLocalizedFailureReasonErrorKey] = failureReason
dict[NSUnderlyingErrorKey] = providedError
let error = NSError(domain: "SOME_ERROR_DOMAIN", code: 9999, userInfo: dict)
类型为[String:AnyObject],由于该类型是非可选的,因此无需强制转换它
原因是可变集合类型NSMutableArray和NSMutableDictionary不会自动桥接到Swift对应项。如果你读过这个问题,你会注意到这句话:我将直接使用Swift字典解决这个问题,但我想知道为什么会出现这样的问题。@AsTeR我不认为你对人如此敏锐会得到很多帮助。我已经添加了原因。@Trojafoe这是真的,这并不反对瓦迪安人。更令人厌倦的是,人们为了回答而回答,通常也遵循不加评论的向下投票模式,或者没有更多理由的要求结束。@瓦迪安人感谢原因,如果你偶然发现需要做这样的演员,你有什么建议吗?