2016-10-29 1 views
1

Я пытался выяснить, как эта невиновная строка может привести к краху приложения. Тот же код работает на 64-битных симуляторах (iPhone 5 или более поздних), но будет разбиваться на 32-битных симуляторах, когда будет получен доступ к new_or_used (необязательная строка в объекте NSManagedObject). Трассировка стека не кажется полезным.EXC_BREAKPOINT (код = EXC_I386_BPT, подкод 0x0) с 32-разрядным симулятором

Любое понимание оценено. Благодаря!

enter image description here

ответ

0

По вашему изображению кажется попробовать компилятор использовать уже высвобождены String.

Чтобы избежать вашей аварии, попробуйте исправить код, как:

if let newOrUsed = itemPriceGuide.new_or_used as? String { 
    // do your stuff 
} 
+0

Я не могу этого сделать, поскольку 'new_or_used' уже является необязательной строкой. Это дает только ошибку «Downcast from String? To String only unwraps optionals». – XCool

+0

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

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