14

使用 Xcode 12 尝试为我的项目创建 Widget 应用程序扩展。

在创建新的 Widget 目标时,我收到以下错误:

'Widget' is annotated with @main and must provide a main static function of type () -> Void or () throws -> Void.

在此处输入图像描述

4

4 回答 4

28

您正在使用 name ,框架Widget中已经调用了一个协议WidgetSwiftUI

您应该使用其他名称,但如果您真的想要,请在开始时添加模块名称,例如SwiftUI.Widget

@main
struct Widget: SwiftUI.Widget {
    private let kind: String = "Widget"

    public var body: some WidgetConfiguration {
        IntentConfiguration(kind: kind, intent: ConfigurationIntent.self, provider: Provider(), placeholder: PlaceholderView()) { entry in
            WidgetEntryView(entry: entry)
        }
        .configurationDisplayName("My Widget")
        .description("This is an example widget.")
    }
}
于 2020-06-23T07:39:47.223 回答
7

对于希望在为 iOS14 项目打开 Mac 时修复 AppDelegate 问题的任何人 - 请查阅:iOS Xcode 12.0 Swift 5 'AppDelegate' 带有 @main 注释,并且必须提供类型为 () -> Void 或 () 的主要静态函数抛出 -> 无效

解决方法是将“@main”更改为“@UIApplicationMain”

于 2020-09-20T16:15:40.083 回答
2

我使用以下代码得到了这个确切的错误:

@main
struct NotesApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

问题是我将我的应用程序逻辑类命名为App

于 2020-12-25T19:38:11.217 回答
0

这段代码我遇到了同样的错误:

import WidgetKit

@main
struct WidgetSale: Widget {
    let kind: String = "widgetSale"

    var body: some WidgetConfiguration {
        StaticConfiguration(kind: kind, provider: Provider()) { entry in
            widgetSaleEntryView(entry: entry)
        }
        .configurationDisplayName("My Widget")
        .description("This is an example widget.")
    }
}

我通过在文件顶部导入 swiftUI 来解决它:

import SwiftUI
于 2020-12-09T07:11:11.147 回答