Shahar Melamed
Shahar Melamed

Reputation: 1734

Xcode 11 Beta 3, build error "Unknown attribute 'State'", "Use of undeclared type 'View'" etc

I build an app with the 2nd beta of Xcode 11, using SwiftUI, and everything worked completely fine, but now, with the 3rd beta, the app isn't even build. I get errors like "Use of undeclared type 'View'", "Unknown attribute 'State'" etc. What can I do? Is the problem in my code or is it just a bug?

The problem is when I'm trying to build the app to run on my Mac (with UIKit for Mac)

@State var score = 0

The error is "Unknown attribute 'State'"

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

The error is "Use of undeclared type 'View'"

Upvotes: 8

Views: 17015

Answers (6)

Bemipefe
Bemipefe

Reputation: 1537

I got the same error while trying to compile a Swift project created with Xcode 13 on Xcode 11. The problem was that the newer version uses the SDK 12.1 while the older one uses the SDK 10.15. To let the project compile on the older Xcode/SDK I just performed these steps:

  • remove the @main attribute from the swift source code

  • add Cocoa.framework in the section Frameworks, Libraries, and Embedded Content

  • add a file named main.m to the project (no bridge header) with this content:

#include <Cocoa/Cocoa.h>

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

    return NSApplicationMain(argc, argv);
}

Upvotes: 2

shervinox
shervinox

Reputation: 166

If you are doing a Kotlin multi-platform project, check if your shared module has a component named "State".

Upvotes: 2

dr.mStar
dr.mStar

Reputation: 101

Instead @main, please replace @UIApplicationMain. I've attached screenshots. https://prnt.sc/vimvwn

Upvotes: 1

oroom
oroom

Reputation: 1398

Got same issue on Xcode 11.2. Found out that the reason was that somewhere in same module I declared protocol State {}. This breaks compiler without any reasonable errors.

Upvotes: 13

Daniel Ryan
Daniel Ryan

Reputation: 7100

I was getting the same "Unknown attribute 'State'" issue in Beta 5. But I was doing "@state" and not "@State". Case matters. It's hard to notice because both ways are shown as purple.

Upvotes: 4

graycampbell
graycampbell

Reputation: 7810

This is from the Xcode 11 Beta 3 Release Notes.

Known Issues

  • Xcode 11 doesn’t support working with SwiftUI in an iPad app brought to macOS. (41416222, 51201699)

I downloaded the Xcode 11 Beta 3 myself just to confirm the errors you mentioned, and I had the same issues when trying to build a SwiftUI project for Mac.

I would suggest going back to using Xcode Beta 2 if possible. Unfortunately, Apple doesn't provide download links to previous betas, so hopefully you have a Time Machine backup or Beta 2 still installed on your computer. Otherwise, you might be out of luck until the next beta is released.

Upvotes: 5

Related Questions