提问人:GarySabo 提问时间:9/4/2023 更新时间:10/3/2023 访问量:400
Xcode 15 Beta 8:WidgetKit #Preview Macro 停止工作:
Xcode 15 Beta 8: WidgetKit #Preview Macro stopped working:
问:
在 Xcode 15 Beta 8 中使用 #Preview 宏有什么变化吗?此代码以前工作正常,但现在不再编译,因为== PREVIEW UPDATE ERROR: CompileDylibError: Failed to build WatchRecoveryWidget.swift Compiling failed: cannot convert value of type 'WatchRecoveryScoreTimeLineEntry' to closure result type 'any View'
#Preview(as: WidgetFamily.accessoryRectangular) {
WatchRecoveryScoreWidget()
} timeline: {
WatchRecoveryScoreTimeLineEntry(date: Date(), recoveryScore: 75, subscriptionIsActive: true)
}
答:
4赞
eschos24
10/3/2023
#1
我能够通过在每个预览上方添加来解决这个问题。不知道为什么它显示的错误如此具有误导性,但希望在未来的 Xcode 15 更新中得到解决。@available(iOS 17.0, *)
因此,您的预览现在将如下所示:
@available(iOS 17.0, *)
#Preview(as: .accessoryRectangular) {
WatchRecoveryScoreWidget()
} timeline: {
WatchRecoveryScoreTimeLineEntry(date: .now, recoveryScore: 75, subscriptionIsActive: true)
}
评论
0赞
GarySabo
10/3/2023
好主意,但这对我不起作用,我仍然看到Compiling failed: cannot convert value of type 'WatchRecoveryScoreTimeLineEntry' to closure result type 'any View'
0赞
eschos24
10/3/2023
您只有一个预览宏吗?您是否在任何其他文件中没有它们?您必须将其放在每个预览宏上方。@available(iOS 17.0, *)
0赞
GarySabo
10/3/2023
整个应用程序中的每个预览宏还是只有 1 个目标?我在手表上有大约 10 个小部件,并将每个小部件的 @available(iOS 17.0, *) 放在上面,并且有同样的问题。我没有尝试我的 iPhone Widget 代码,但它是一个单独的目标,所以这应该无关紧要,对吧?
1赞
eschos24
10/3/2023
啊,如果它们在 watchOS 和 iOS 之间共享,那么无论如何预览都可能会中断。在 Xcode 15 的发行说明中,它提到了一个已知问题,即“在 watchOS 应用程序和 iOS 应用程序共享的小部件中预览文件时,预览可能会失败108017929。
0赞
GarySabo
10/3/2023
明白了,是的,我在 iOS 和 watchOS 之间共享了大量代码。
评论
any View
PreviewProvider