Swift2 ';NSMutableDictionary';不可转换为';[NSObject:AnyObject]';swift 2.0

Swift2 ';NSMutableDictionary';不可转换为';[NSObject:AnyObject]';swift 2.0,swift2,Swift2,更新到swift 2.0后 发生了一些以前是正确的错误, 这是代码 let dict = NSMutableDictionary() dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" dict[NSLocalizedFailureReasonErrorKey] = failureReason dict[NSUnderlyingErrorKey] = error

更新到swift 2.0后
发生了一些以前是正确的错误, 这是代码

let dict = NSMutableDictionary()   
dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
dict[NSLocalizedFailureReasonErrorKey] = failureReason   
dict[NSUnderlyingErrorKey] = error      
error = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict as [NSObject: AnyObject])
错误信息如下所示:

'NSMutableDictionary' is not convertible to '[NSObject : AnyObject]'

你知道如何解决这个问题吗?

我无法重现你的问题,但有几点建议可以完全避免使用
NSMutableDictionary
(从而消除强制转换):

  • 您可以直接使用Swift
    字典
    ,无需强制转换:

    var dict = [NSObject: AnyObject]()
    dict[NSLocalizedDescriptionKey]        = "Failed to initialize the application's saved data"
    dict[NSLocalizedFailureReasonErrorKey] = failureReason
    dict[NSUnderlyingErrorKey]             = error
    
  • 您还可以在单个语句中声明字典和键/值:

    let dict: [NSObject : AnyObject] = [
        NSLocalizedDescriptionKey        : "Failed to initialize the application's saved data",
        NSLocalizedFailureReasonErrorKey : failureReason,
        NSUnderlyingErrorKey             : error
    ]
    

  • 我已经浏览了你的代码,我修改如下。请查看以下代码:

    var dict = NSMutableDictionary() as [NSObject : AnyObject]
    let error :NSError = {    return NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict as [NSObject: AnyObject]) }()
    
    dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
    dict[NSLocalizedFailureReasonErrorKey] = "hello"
    dict[NSUnderlyingErrorKey] = error 
    

    做一个干净的构建,你的代码对我来说很好。