2016-12-30 14 views
0

Я уверен, преобразованием старого проекта Swift 2 Свифтом 3. В предыдущей версии я зарегистрировал значение по умолчанию для неустановленного по умолчанию пользователя в AppDelegate, как это:Регистрация типов множественного значения в UserDefaults с Swift 3

let defaults = NSUserDefaults.standardUserDefaults() 
let defaultValues = [ 
    "stringKey" : "", 
    "intKey" : 50 
] 
defaults.registerDefaults(defaultValues as! [String : AnyObject]) 

Xcode помогает преобразовать его, но Autoconvert в Xcode не работает из-за ошибки:

Heterogenous collection literal could only be inferred to '[String : Any]'; add explicit type annotation if this is intentional

авто правильно, наконец, сделал работу, но к тому времени я уже написал большую часть этого вопроса, поэтому я просто добавить ответ ниже, а не удаление вопрос. (Кроме того, авто конвертировать предложения были более многословны, чем ответ я обеспечиваю ниже.)

Примечание

  • Here is an answer для регистрации одного типа в Swift 3.
  • Я говорю о регистрации , не устанавливая несколько значений по умолчанию.

ответ

1

Вот синтаксис для Swift 3. Я включаю его в свой контекст в AppDelegate.

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    override init() { 
     let defaults = UserDefaults.standard 
     let defaultValues : [String : Any] = [ 
      "stringKey" : "", 
      "intKey" : 50 
     ] 
     defaults.register(defaults: defaultValues) 
     super.init() 
    } 

    // ... 
} 

Помните, что это не устанавливает значения, он обеспечивает только некоторые начальные значения по умолчанию для того, когда пользователь еще не установил их.