2015-10-08 2 views
0

я не понимаю эту аварии в SwiftEXC_BAD_INSTRUCTION оценки булевых сравнения

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    if (homeChosen == true && section > 0 && indexChosen + offset == section) { 

EXC_BAD_INSTRUCTIONcode = EXC_1386_INVOP_subcode 0x0 

на эту первую строку в методе.

homechosen определяется как

var indexChosen = 0 
var homeChosen:Bool! at the top of the class 

Почему этот сбой?

Изолированные на:

   if (indexChosen + offset == section) { 

Сравнение если an Int + Int == Int разваливается. indexChosen is 0.

+0

Каковы значения и типы indexChosen и offset? –

+0

возможно 'homeChosen' is nil – nRewik

+0

Да, ничего себе. Booleans defautl для nil вместо false. Неинтуитивный. – quantumpotato

ответ

0

Основываясь на ошибке, я бы предположил, что значения indexChosen и/или offset не являются ожидаемыми, а инструкция добавления вызывает опрокидывание. Вы можете проверить это, удаляя математику из, если заявление и проверить, чтобы увидеть, если сбой происходит в математике именно:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    let newIndex = indexChosen + offset 
    if (homeChosen == true && section > 0 && newIndex == section) { 

Если сбой происходит на линии с добавлением, see my answer to this question.

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