在应用程序中,多次调用以下方法来查找两个随机数,使之成为唯一且之前从未被选择的耦合项。
在第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岁。
答案 0 :(得分:0)
问题是valueForKey
。在Apple文档中,它明确提到这将返回基于"访问者搜索模式"的值。如果您正在寻找密钥的存在,您应该更倾向于用户objectForKey
当密钥不存在时实际返回nil。