2015-02-12 4 views
1

Я регистрирующий по умолчанию в AppDelegate:NSUserDefaults registerDefaults в Swift

let defaults = NSUserDefaults.standardUserDefaults() 
     let registrationDictionary = [kSelectedBitrate: 128 as NSNumber, kSelectedCodec: kAudioFormatMPEG4AAC as NSNumber] 
     defaults.registerDefaults(registrationDictionary) 
     defaults.synchronize() 

Однако, когда я прочитал его позже вид контроллера, оба целочисленных значений 0:

let defaults = NSUserDefaults.standardUserDefaults() 
    let bitrate = defaults.integerForKey(kSelectedBitrate) 
    println(bitrate) 
    let codec = defaults.integerForKey(kSelectedCodec) 
    println(codec) 
    println(kAudioFormatMPEG4AAC) 

консоль журнал

0 
0 
1633772320 

Что не так с кодом?

+0

Попробуйте заменить 'как NSNumber' на 'as Int' –

+0

@TheTom Это тот же результат. – Shmidt

+0

код работает для меня. если только (это глупо), то как-то «kSelectedBitrate» и «kSelectedCodec» отличаются в обоих случаях. – rakeshbs

ответ

2

Причина в том, что контроллер загружался до didFinishLaunchingWithOptions в AppDelegate.

Итак, я дублировал код на init метод контроллера, и проблема решена.

Смежные вопросы