2015-02-22 3 views
0

Я смущен тем, что использую integer для ключа в swift. Может ли кто-нибудь объяснить, как это работает и какое значение оно вернет? Я ожидаю, что он сможет вернуть целое число, связанное с ключом в словаре или массиве, но не понимает, как он вернет целое число для строки?using integerForKey со строками swift

import Foundation 

// adopted by delegate so it can be notified when settings change 
protocol ModelDelegate { 
    func settingsChanged() 
} 

class Model { 
    private let regionsKey = "FlagQuizKeyRegions" 
    private let guessesKey = "FlagQuizKeyGuesses" 

    // reference to QuizViewController to notify it when settings change 
    private var delegate: ModelDelegate! = nil 

    var numberOfGuesses = 4 // number of guesses to display 

    private var enabledRegions = [ 
     "Africa" : false, 
     "Asia" : false, 
     "Europe" : false, 
     "North_America" : true, 
     "Oceania" : false, 
     "South_America" : false 
    ] 

    // variables to maintain quiz data 
    let numberOfQuestions = 10 
    private var allCountries: [String] = [] // list of all flag names 
    private var countriesInEnabledRegions: [String] = [] 

    // initialize the settings from the app's NSUserDefaults 
    init(delegate: ModelDelegate, numberOfQuestions: Int) { 
     self.delegate = delegate 

     // get the NSUSerDefaults object for the app 
     let userDefaults = NSUserDefaults.standardUserDefaults() 

     // get number of guesses 
     let tempGuesses = userDefaults.integerForKey(guessesKey) 
     if tempGuesses != 0 { 
      numberOfGuesses = tempGuesses 
     } 

ответ

1

Он вернет целое число для ключа, который является строкой. Итак, скажем:

let myKey = "Countries" 
let myCountries = ["USA","Brazil","Japan"] 
NSUserDefaults.standardUserDefaults().setInteger(myCountries.count, forKey: myKey) 
let numberOfCountries = NSUserDefaults.standardUserDefaults().integerForKey(myKey) // 3 
Смежные вопросы