2015-02-19 2 views
0

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

В строке 16 Xcode выбрасывает EXC_BAD_access thingy.
если NSUserDefaults.standardUserDefaults(). ValueForKey (coupledItemSearchTerm)! = Ноль

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

EDIT: также попробовал «objectForKey» тоже. Не работает.

func randomGenerator() 
{ 
    firstRandomItemId = self.productIds[Int(arc4random_uniform(UInt32(self.productIds.count)))] 
    secondRandomItemId = 0 
    tempSecondRandomItemId = self.productIds[Int(arc4random_uniform(UInt32(self.productIds.count)))] 
    if tempSecondRandomItemId == firstRandomItemId 
    { 
     randomGenerator() 
    } 
    else 
    { 
     secondRandomItemId = tempSecondRandomItemId 
    } 
    coupledItemSearchTerm = "\(self.firstRandomItemId)\(self.secondRandomItemId)" 

    if NSUserDefaults.standardUserDefaults().valueForKey(coupledItemSearchTerm) != nil 
    { 
     if NSUserDefaults.standardUserDefaults().valueForKey(coupledItemSearchTerm) as Int == 1 
     { 
      println("\(coupledItemSearchTerm) was preferred") 
      randomGenerator() 
     } 
    } 

    if chosenCoupledItemIds.valueForKey(coupledItemSearchTerm) != nil 
    { 
     if chosenCoupledItemIds.valueForKey(coupledItemSearchTerm) as Int == 1 
     { 
      println("\(coupledItemSearchTerm) was chosen for showing couples") 
      randomGenerator() 
     } 
    } 
    else 
    { 
     chosenCoupledItemIds.setValue(1, forKey: coupledItemSearchTerm) 
     coupledItemId.addObject(firstRandomItemId) 
     coupledItemId.addObject(secondRandomItemId) 
     coupledItemsId.addObject([coupledItemId[c*2],coupledItemId[c*2+1]]) 
     c++ 
     println(coupledItemSearchTerm) 
    } 

} 

Пожалуйста, помогите мне с этим. Я был бы благодарен как 14-летний.

ответ

0

Проблема valueForKey. В Apple Documentation четко сказано, что это возвращает значение, основанное на шаблоне поиска Accessor. Если вы ищете наличие ключа, вы должны выбрать пользователя objectForKey, который фактически возвращает ноль, когда ключ не существует.

+0

Нет, это не помогает – SahandTheGreat

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