Xcode Недопустимый вывод Swift Parseable (неверный формат JSON)

Я получаю 4 ошибки из-за неправильного формата JSON, и одна команда compileSwift завершилась с ошибкой ненулевого кода выхода.

Я понятия не имею, как это отладить, поскольку в нем не указано, в каком файле это происходит.

Xcode Недопустимый вывод Swift Parseable (неверный формат JSON)

Я попытался удалить каталог рабочей области и модулей и выполнить новую установку модуля и обновление модуля.

Я попытался удалить производные данные.

Ни один из них не работал.

Что такое checkin? Это третья сторона одной из ваших целей?

Cristik 27.02.2019 07:58

Почему люди минусуют это? У меня такая же проблема после перемещения некоторых файлов в Finder, чтобы избежать испорченного файла pbxproj. @mocode10 ты докопался до этого?

Declan McKenna 25.03.2019 11:11

@DeclanMcKenna Я знаю, что для тебя, наверное, уже слишком поздно, но проверяй мой ответ на наличие ответов ;-)

martinh_kentico 04.01.2020 20:21
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
16
3
2 450
8

Ответы 8

Вкладка отчетов (последняя) на панели навигации поможет вам в таких ситуациях. Вы можете просматривать подробные журналы действий по сборке и отслеживать их.

Я столкнулся с точно таким же сообщением об ошибке при преобразовании рабочей области из Swift 4.2 в Swift 5. Даже с той же числовой последовательностью в сообщении об ошибке.

Команда swiftc умирала для некоторых символов Юникода в моем исходном файле (в шаблоне авторских прав в верхней части моего файла). Как предложил t0rst, вы можете использовать инспектор, чтобы увидеть, в каком файле команда умерла.

После удаления символов юникода сборка заработала. Я подозреваю, что могут быть некоторые проблемы с обновлением для использования UTF-8 в качестве класса хранения по умолчанию.

РЕДАКТИРОВАТЬ. Только что обнаружил, что хранилище Unicode в файле-нарушителе действительно было неправильным. В терминале запустите file *.swift на ваших исходных файлах. Файлы с «текстом Unicode UTF-8» в порядке. Файл, вызвавший проблему, отмечен как «текст ISO-8859». Используйте iconv -t UTF-8 src dst, чтобы исправить файл.

Я получал ту же ошибку, и, прочитав комментарии выше, я просмотрел свой код и увидел это «возврат 93а» Итак, после удаления этого «а» теперь все работает нормально.

Итак, вот моя история по той же самой проблеме, но совершенно по другой причине и решению.

TL; DR - декодируйте этот проблемный массив как строку и прочитайте его, это ваша настоящая проблема, а не проблема с JSON.

А вот и вся моя история...

Перво-наперво... Я получил эту ошибку, переместив файлы приложения в фреймворк и изменив их цель.

Я попробовал все, что вы, ребята, предложили, но безуспешно, мне потребовалось некоторое время, чтобы выяснить, как рекурсивно сообщать об этих файлах. Если кто-то хочет проверить свою кодировку во всем проекте, вот как это сделать:

find . -type f -name "*.swift" -exec file {} +

Все мои файлы сообщали либо ASCII, либо UTF-8, я даже удалил все символы Unicode, чтобы сделать их все ASCII, и это все равно не помогло.

Так или иначе, в полном отчаянии я решился на последнюю попытку... пытаясь расшифровать то, что было в этой не поддающейся расшифровке последовательности байтов.

Я открыл консоль браузера и сделал следующее:

String.fromCharCode(...[123, 10, 32, 32, 34, <the rest of the error array from XCode>])

И это спасло мой день, предоставив актуальную информацию о проблеме.

То, что я получил, было фактическим сообщением об ошибке, которое по какой-то причине (до сих пор мне неизвестной) компилятор не смог обработать.

Вот небольшой отрывок, из которого вы также можете понять, почему все люди видят одну и ту же последовательность в начале:

{
  "kind": "finished",
  "name": "compile",
  "pid": 27181,
  "output": ...
... /RecognizedSymbolBlock.swift:5:15: error: use of undeclared type 'CGRect'\n    let rect: CGRect;\n ... 
... /RecognizedTextBlock.swift:3:7: error: type 'RecognizedTextBlock' does not conform to protocol 'Decodable'\nclass RecognizedTextBlock ...

Итак, моя проблема заключалась в том, что фреймворк CoreGraphics не был включен в цель, а также не был добавлен с помощью import CoreGraphics в самом файле.

Как ни странно, когда я посмотрел на этот файл в XCode (чего я раньше не делал, поскольку это был всего лишь перенос кода, который работал раньше), я вдруг ясно отобразил все эти ошибки.

Мой последний странный вывод был после того, как я спросил себя: «Какого черта это сработало в исходной цели без import CoreGraphics

Оказалось, что наличие этого в заголовочном файле моста автоматически приводит к связанным с ним фреймворкам, как если бы они были импортированы во все мои файлы (это одна из связанных фреймворков, которые я использую, которая использует UIKit):

#import <TesseractOCR/TesseractOCR.h>

Но на самом деле это может быть что угодно, например:

#import <UIKit/UIKit.h>

Дело в том, что если вы используете заголовочный файл моста, он может легко скрыть тот факт, что вы не обязаны писать согласованный код со всеми необходимыми импортами.

В любом случае, моя основная цель — дать всем понять, что их первоначальная проблема, скорее всего, является чем-то совершенно другим, и первоначальная проблема на самом деле закодирована в том массиве байтов ошибок, который каждый получает. Даже если вы столкнетесь с проблемами кодирования, этот массив байтов может указать вам, что не так с вашим кодом.

Удачного исправления!

такой же. перенос кода во фреймворк. Я хотел бы уточнить... в консоли разработчика Google... String.fromCharCode(123, 10, 32, 32, 34, 107, 105, 110, 100, 34, 58,...) без [] даст вам именно то сообщение об ошибке, которое говорит @martinh_kentico. И это скажет вам, какой файл. В моем случае исправлено добавлением импорта для нового фреймворка.

Little Watchman 05.03.2020 22:54

интересно... У меня был класс под названием Категория. Что было хорошо, когда все было на уровне приложения. Но на уровне фреймворка это серьезно сбивало с толку компилятор. Я переименовал его в ABCCategory, и вся эта странная проблема с недопустимым быстрым JSON исчезла ... до переименования у меня было 14 из них.

Little Watchman 05.03.2020 23:13

В моем случае я случайно оставил один из исходных файлов зашифрованным во время компиляции. Благодаря вашему ответу я смог увидеть истинную ошибку, используя fromCharCode, которая была связана с недопустимыми символами UTF-8.

HudsonGraeme 03.02.2021 00:31

В моем случае эта ошибка компиляции была вызвана проблемой кодирования/декодирования исходного кода. Попробуйте закрыть Xcode и программы, работающие с кодом одновременно, и перезапустить Xcode

Я просто закрыл и снова открыл Xcode. Это устранило ошибку. Но потом я заметил мусорный символ в исходном коде, потому что моя глупая кошка наступила на клавиатуру моей книги Mac, когда шла к подоконнику. Будет, когда я научусь?

Doug Null 16.12.2020 20:26

У меня были те же ошибки из вопроса. Я перетащил файл из проекта_1 в проект_2, и вдруг все эти ошибки появились внутри проекта_2. Странно то, что новый файл, который я перетащил, не имел ничего общего с ошибками, потому что они появились в совершенно других файлах, которые я ранее перетаскивал из проекта_1. Эти файлы работали нормально в течение нескольких месяцев, и ошибки не появлялись до тех пор, пока я не перетаскивал новый файл.

Я закрыл Xcode, снова открыл его, и пляжный мяч смерти начал вращаться. Xcode был в основном заморожен, мне пришлось ждать около 45 минут, чтобы он разморозился.

Я добавил скриншоты ошибок и шаги, которые я должен был сделать, чтобы решить эту проблему.

1- Это были исходные ошибки, как и в вопросе оператора. У меня была 151 ошибка:

2- После того, как пляжный мяч перестал вращаться, я начал просматривать все свои файлы. Я столкнулся с файлом, который каким-то образом был поврежден, и его обычный код каким-то образом был заменен странным кодом внутри средней/правой панели ниже.

Копирование и вставка поврежденного кода из средней/правой панели вообще не сработало, что было странно, но я выполнил глобальный поиск (cmmnd+4) для «закладки», и появилось еще 6 файлов, которые также содержали поврежденный код (показанный внутри левую панель навигации).

«закладка» — это первое слово в строке 1 внутри файла в средней/правой панели, поэтому я выбираю его:

3- Я скопировал 6 файлов из исходного проекта обратно в этот проект (поврежденный), и ошибки увеличились со 151 до 10 новых ошибок. Все 10 ошибок были Invalid UTF-8 found in source file:

4- Я заглянул во все 6 файлов и внутри закомментированного кода в самом верху файла был странный символ вместо символа копирайта в строке 6:

5- Я удалил странный символ и все снова заработало.

Я не знаю, как эти файлы были повреждены. Я думаю, что это как-то связано с перетаскиванием их из одного проекта в другой. Вероятно, это был просто случайный баг. Чтобы быть в безопасности, я удалил 6 файлов, а затем добавил их обратно один за другим, фактически создав новый файл внутри Xcode проекта_2. Затем я копирую код из того же файла из проекта_1 обратно в проект_2. Мне больше не нужно перетаскивать файлы Swift из проекта в проект.

Очень странно.

Я просто закрыл и снова открыл Xcode. Это устранило ошибку. Но потом я заметил мусорный символ в исходном коде, потому что моя глупая кошка наступила на клавиатуру моей книги Mac, когда шла к подоконнику. Будет, когда я научусь?

Doug Null 16.12.2020 20:29

В моем случае я случайно добавил ярлык к быстрому файлу, а не к самому быстрому файлу.

Чтобы расшифровать приведенный выше код. Щелкните правой кнопкой мыши на странице браузера, нажмите «Проверить» и откройте вкладку «Консоль». На вкладке консоли String.fromCharCode(123, 10, 32,23) замените на свои числа и нажмите Enter. Вы получите точную задачу в читаемом формате.

То же самое уже было объяснено в этот ответ.

Eric Aya 12.07.2021 16:33

Другие вопросы по теме