Xcode 11 Beta 3, ошибка сборки "Неизвестный атрибут" Состояние "", "Использование необъявленного типа" Вид "" и т. Д.

Я создаю приложение со 2-й бета-версией Xcode 11, используя SwiftUI, и все работало совершенно нормально, но теперь, с 3-й бета-версией, приложение даже не собрано. Я получаю сообщения об ошибках типа "Использование необъявленного типа" Вид "", "Неизвестный атрибут" Состояние "" и т. Д. Что я могу сделать? Проблема в моем коде или это просто ошибка?

Проблема в том, что я пытаюсь собрать приложение для запуска на моем Mac (с UIKit для Mac)

@State var score = 0

Ошибка "Неизвестный атрибут" Состояние ""

struct ContentView : View {
    /*...*/
}

Ошибка "Использование необъявленного типа" Вид ""

6 ответов

Решение

Это из примечаний к выпуску Xcode 11 Beta 3.

Известные проблемы

  • Xcode 11 не поддерживает работу со SwiftUI в приложении для iPad, поданном на macOS. (41416222, 51201699)

Я сам скачал Xcode 11 Beta 3 только для того, чтобы подтвердить упомянутые вами ошибки, и у меня возникли те же проблемы при попытке создать проект SwiftUI для Mac.

Я бы предложил вернуться к использованию Xcode Beta 2, если это возможно. К сожалению, Apple не предоставляет ссылки на скачивание к предыдущим бета-версиям, поэтому, надеюсь, у вас есть резервная копия Time Machine или Beta 2, все еще установленная на вашем компьютере. В противном случае вам может не повезти, пока не будет выпущена следующая бета-версия.

Получил такую ​​же проблему в Xcode 11.2. Выяснилось, что причина в том, что где-то в том же модуле я объявилprotocol State {}. Это ломает компилятор без каких-либо разумных ошибок.

В бета-версии 5 я получал ту же проблему с "неизвестным атрибутом" состояние "". Но я делал "@state", а не "@State". Дело имеет значение. Это трудно заметить, потому что оба пути показаны фиолетовым.

Я получил ту же ошибку при попытке скомпилировать проект Swift, созданный с помощью Xcode 13 на Xcode 11. Проблема заключалась в том, что более новая версия использует SDK 12.1 , а старая — SDK 10.15. Чтобы проект скомпилировался на старом Xcode/SDK, я просто выполнил следующие шаги:

  • удалить @mainатрибут из исходного кода swift

  • добавьте Cocoa.framework в раздел Frameworks, Libraries и Embedded Content

  • добавьте в проект файл с именем main.m (без заголовка моста) со следующим содержимым:

#include <Cocoa/Cocoa.h>

      int main(int argc, const char * argv[]) {

    return NSApplicationMain(argc, argv);
}

Если вы выполняете многоплатформенный проект Kotlin, проверьте, есть ли в вашем общем модуле компонент с именем «State».

Вместо @main замените @UIApplicationMain. Прикрепил скриншоты.https://prnt.sc/vimvwn

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