当 Codegen 处于 ClassDefinition 或 Category/Extension 中时,如何让 SwiftUI 预览工作?
Posted
技术标签:
【中文标题】当 Codegen 处于 ClassDefinition 或 Category/Extension 中时,如何让 SwiftUI 预览工作?【英文标题】:How do you get SwiftUI Previews to work when Codegen is in ClassDefinition or Category/Extension? 【发布时间】:2020-07-25 20:19:27 【问题描述】:我有一个使用核心数据和 xcdatamodeld 文件的视图,其中包含 Item
结构的定义。如果我使用 Xcode 为 Item
生成文件并手动管理它们,预览效果很好。但是,当我在其他任何一种形式中使用 Codegen 时,都会收到错误消息,指出整个结构未定义。这会阻止预览工作。
代码:
struct ArchiveView: View
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
@FetchRequest(entity: Item.entity(), sortDescriptors: []) var fetchedResults: FetchedResults<Item>
var body: some View
return NavigationView
List(fetchedResults, id: \.self ) (fetchedResult: Item) in
return PurchaseView(name: fetchedResults.name price: fetchedResults.price, purchaseDate: fetchedResults.date)
.navigationBarTitle("Order")
Item+CoreDataClass 和 Item+CoreDataProperties 都丢失了,因为它们是由 xcode 自动生成的。
我现在正在使用手动 Codegen 来查看预览,但我很好奇是否可以使用其他选项。如何在核心数据文件中使用 Class Defintion Codegen 并且仍然能够使用 SwiftUI 预览?
【问题讨论】:
【参考方案1】:经过一些测试,xcode 代码生成器本身似乎有问题。每当我至少一次将代码生成器更改为除类定义之外的任何内容时,都会中断与预览的链接。
解决方法是创建一个新项目并复制旧文件。
【讨论】:
以上是关于当 Codegen 处于 ClassDefinition 或 Category/Extension 中时,如何让 SwiftUI 预览工作?的主要内容,如果未能解决你的问题,请参考以下文章
从 graphql-codegen 获取类似于 apollo codegen 生成的类型
Rust 编译器结合 Cranelift ,显著缩短调试构建时间