无法将'[NSObject:AnyObject]'类型的值转换为预期的参数类型'[String:AnyObject]'

Lif*_*Lin 7 swift xcode7

Xcode7和swift,我的代码:

func loadDefaults() {
    let settingBundle = NSBundle.mainBundle().pathForResource("Settings", ofType: "bundle")
    if settingBundle == nil {
        return
    }

    let root = NSDictionary(contentsOfFile: settingBundle!.stringByAppendingString("Root.plist"))

    let prefrences = root?.objectForKey("PreferenceSpecifiers") as! Array<NSDictionary>

    let defautlsToRegister = NSMutableDictionary(capacity: root!.count)

    for prefrence in prefrences {
        let key = prefrence.objectForKey("Key") as! String!
        if key != nil {
            defautlsToRegister.setValue(prefrence.objectForKey("DefaultVale"), forKey: key!)
        }
    }

    NSUserDefaults.standardUserDefaults().registerDefaults(defautlsToRegister as [NSObject: AnyObject])
}
Run Code Online (Sandbox Code Playgroud)

问题代码:

NSUserDefaults.standardUserDefaults().registerDefaults(defautlsToRegister as [NSObject: AnyObject])
Run Code Online (Sandbox Code Playgroud)

建筑警告

无法将'[NSObject:AnyObject]'类型的值转换为预期的参数类型'[String:AnyObject]'

改变代码:

NSUserDefaults.standardUserDefaults().registerDefaults(defautlsToRegister as [String: AnyObject])
Run Code Online (Sandbox Code Playgroud)

建筑警告

'NSMutableDictionary'不能转换为'[String:AnyObject]'

请教我怎么做?谢谢.

Sha*_* TK 5

defautlsToRegister应该采用以下格式 [String: AnyObject]

示例:以下应在没有警告的情况下工作

let defautlsToRegister = ["Test":10]
NSUserDefaults.standardUserDefaults().registerDefaults(defautlsToRegister as [String: AnyObject])
Run Code Online (Sandbox Code Playgroud)