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