Я, должно быть, идиот или что-то в этом роде, но я чешу затылок третий день подряд и не могу понять, что не так с моим намерением закодировать некоторые данные JSON в моей программе Swift ...
Вот такая ситуация: У меня есть два следующих класса:
class Node: Codable {
// Nothing in here
}
а также
class Shape: Node {
// No code here too
}
Затем я пытаюсь закодировать подкласс следующим образом:
do {
let encodedData = try JSONEncoder().encode(Shape())
} catch {
print(error)
}
Это все, что я добавил в пустой проект приложения для единого просмотра. Когда я запускаю его, я получаю сбой «Thread 1: EXC_BAD_ACCESS (code = 1, address = 0x350)».
Конечно, изначально у моих классов было много свойств, которые тоже можно было кодировать. Я подумал, что это любой из них, поэтому снял их, но, похоже, сбой вызван не свойствами ...
Я запускаю Xcode 9.3 на MacBook Pro High Sierra. Есть ли кто-нибудь, желающий воспроизвести это, или кто-то уже столкнулся с таким странным поведением?
Это именно то, что я сделал, Мэтт :(
С удовольствием: github.com/stoyanmar/CodableTest
Да, чистая сборка, затем закрыл Xcode, удалил DerivedData для этого конкретного проекта, удалил подпапку ModuleCache в DerivedData (не уверен, что пришлось бы), а затем перезапустил Xcode. Тот же результат. Могу ли я предпринять какие-то другие шаги?
Мэтт, хотя я вообще не использую симуляторы, я последовал твоему совету и удалил все симуляторы, вышел из Xcode, полностью очистил папку DerivedData, включая ModuleCache, перезапустил Mac, и вот мы снова - изящный сбой ... Возможно, переустановка Xcode следующий в очереди?
Да, после вашего предложения удалить симуляторы, я решил, что вы должны тестировать его на симуляторе, поэтому я переустановил симулятор iPhone X, но безуспешно. Обычно я тестирую iPad Pro - гораздо быстрее и правильно обрабатывает прикосновения.
Сейчас ты разговариваешь! :) Что вы изменили, чтобы туда попасть?





Это известная ошибка, и ее можно обойти, включив режим компиляции всего модуля для конфигурации отладки или обновившись до бета-версии Xcode 10.
См. bugs.swift.org/browse/SR-7743. Я добавил в отчет ваш проект на github, поэтому, пожалуйста, не удаляйте его.
Мэтт, действительно, когда я изменил режим компиляции (отладка) с одного файла на целый модуль, все вернулось к норме. Надеюсь, это те настройки, о которых вы говорили. Ты спас мне день, тьфу, ночь! Очень благодарен за обнаружение источника проблемы! Конечно, я не собираюсь снимать его в ближайшее время.
Да, извините, я имел в виду компиляцию, у меня в голове была Оптимизация, пока я печатал.
Звучит многообещающе. Значит, что-то не так с моей настройкой. Есть идеи, что сбросить или переустановить? Имейте в виду, что я создал совершенно новый проект, поэтому это должно исключить любое наследие от предыдущих изменений самого проекта. Возможно, это связано с какой-то несогласованной настройкой?