NSUserDefaults抛出意外异常

时间:2015-02-19 22:28:55

标签: ios xcode swift nsuserdefaults

在应用程序中,多次调用以下方法来查找两个随机数,使之成为唯一且之前从未被选择的耦合项。

在第16行,Xcode抛出一个EXC_BAD_access东西 如果NSUserDefaults.standardUserDefaults()。valueForKey(coupledItemSearchTerm)!= nil

当我调试我的代码时,它每次成功运行此行,除了它必须执行的最后一次。它非常奇怪。

编辑:也尝试了“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岁。

1 个答案:

答案 0 :(得分:0)

问题是valueForKey。在Apple文档中,它明确提到这将返回基于"访问者搜索模式"的值。如果您正在寻找密钥的存在,您应该更倾向于用户objectForKey当密钥不存在时实际返回nil。