2015-06-20 4 views
0

индекса Making по умолчанию = 0AnyObject заставляет меня нервничать (не удается найти Инициализатор для типа ...)

let defaults = NSUserDefaults.standardUserDefaults() 

    if !(defaults.objectForKey("LastIndex") != nil) 
    { 
     defaults.setObject(Int(0), forKey: "LastIndex") 
    } 

Затем пытаюсь сравнить этот показатель со случайным числом

var randomIndex: Int = 0 
    let defaults = NSUserDefaults.standardUserDefaults() 
    let lastIndex: Int = Int(defaults.objectForKey("LastIndex")) 

    while randomIndex != lastIndex 
    { 
     randomIndex = Int(arc4random_uniform(UInt32(phrasesArray.count))) 
    } 

но получать a) enter image description here

+0

На какой строке вы получаете эту ошибку? –

ответ

1

Я нашел решение - настолько просто, что я даже LOL'ed.

let lastIndex: Int = defaults.integerForKey("LastIndex") 
0

Если вы хотите сохранить Int INT NSUserDefaults вы можете сделать это прямо так:

NSUserDefaults.standardUserDefaults().setInteger(YourIntValue, forKey: "LastIndex") 

Позвольте мне исправить некоторые из вашего кода. Прежде всего посмотрите на этот код:

let defaults = NSUserDefaults.standardUserDefaults() 

if !(defaults.objectForKey("LastIndex") != nil) 
{ 
    defaults.setObject(Int(0), forKey: "LastIndex") 
} 

Вы проверяете здесь, что если есть значение для LastIndex или нет, но вместо того, чтобы пытаться что вы можете напрямую создать значение Int с может непосредственно читать Int из памяти с этим кодом:

let abc = NSUserDefaults.standardUserDefaults().integerForKey("LastIndex") 
println(abc) 

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

Теперь посмотрим на этот код:

let lastIndex: Int = Int(defaults.objectForKey("LastIndex")) 

Здесь вы читаете значения из этого ключа, где вы пытаетесь литьем как Int, но если вы делаете это, как я предложил вам можно непосредственно получить Int значение формировать его так просто сделать его простым, как:

let lastIndex = NSUserDefaults.standardUserDefaults().integerForKey("LastIndex") 

Это всегда возвращает Int и если нет ничего установить, то это будет 0 по умолчанию.

И вы можете выполнять свои действия, как вы хотите:

while randomIndex != lastIndex { 
     randomIndex = Int(arc4random_uniform(UInt32(phrasesArray.count))) 
} 

Надеется, что это поможет.

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