使用 Xcode 12 尝试为我的项目创建 Widget 应用程序扩展。
在创建新的 Widget 目标时,我收到以下错误:
'Widget' is annotated with @main and must provide a main static function of type () -> Void or () throws -> Void.
您正在使用 name ,框架Widget
中已经调用了一个协议Widget
。SwiftUI
您应该使用其他名称,但如果您真的想要,请在开始时添加模块名称,例如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.")
}
}
对于希望在为 iOS14 项目打开 Mac 时修复 AppDelegate 问题的任何人 - 请查阅:iOS Xcode 12.0 Swift 5 'AppDelegate' 带有 @main 注释,并且必须提供类型为 () -> Void 或 () 的主要静态函数抛出 -> 无效
解决方法是将“@main”更改为“@UIApplicationMain”
我使用以下代码得到了这个确切的错误:
@main
struct NotesApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
问题是我将我的应用程序逻辑类命名为App
。
这段代码我遇到了同样的错误:
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