ios - SwiftUI Preview 不适用于 FetchRequest 和 Init
问题描述
我遇到了 SwiftUI Preview 有时无法正常工作的问题(但没有给我任何错误,只是一个空白的 Canvas)。我已经缩小了问题的范围——当我将 fetchRequest 与 init 一起使用时它不起作用。但我不知道下一步该做什么。
预览适用于此代码:
import SwiftUI
struct ListView: View {
var fetchRequest = FetchRequest<NPBooking>(entity: NPBooking.entity(), sortDescriptors: [])
var bookings: FetchedResults<NPBooking> { fetchRequest.wrappedValue }
var body: some View {
ForEach(bookings, id: \.self) { booking in
Text("item")
}
}
}
struct ListView_Previews: PreviewProvider {
static var previews: some View {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
//Test data
let testBooking = NPBooking.init(context: context)
testBooking.date = Date()
testBooking.name = "name"
return ListView().environment(\.managedObjectContext, context)
}
}
预览不适用于此代码:
import SwiftUI
struct ListView: View {
var fetchRequest: FetchRequest<NPBooking>
var bookings: FetchedResults<NPBooking> { fetchRequest.wrappedValue }
var body: some View {
ForEach(bookings, id: \.self) { booking in
Text("item")
}
}
init(startDateOfMonth: Date) {
fetchRequest = FetchRequest<NPBooking>(entity: NPBooking.entity(), sortDescriptors: [
NSSortDescriptor(keyPath: \NPBooking.date, ascending: true)
], predicate: NSPredicate(format: "date >= %@", startDateOfMonth as NSDate))
}
}
struct ListView_Previews: PreviewProvider {
static var previews: some View {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
//Test data
let testBooking = NPBooking.init(context: context)
testBooking.date = Date()
testBooking.name = "name"
return ListView(startDateOfMonth: Date()).environment(\.managedObjectContext, context)
}
}
我想我需要为此 init 或 fetchRequest 或两者添加一些测试数据?尝试了几件事,但我无法让它发挥作用。
解决方案
如果您将预览中的调用更改为
ListView(startDateOfMonth: Date().addingTimeInterval(-86400 * 30)).environment(\.managedObjectContext, context)
您的 startDateOfMonth 变量设置为今天前 30 天,这些行
推荐阅读
- python - 时区在 python 烧瓶中被删除
- javascript - 来自 Google Script 的 API 的 JSONRpcClient 调用
- c# - 错误 CS1061:类型“BikeCostDetails.Bike”不包含“CalculateFinalCost”的定义
- python - 从 csv 文件中的多个文件写入多个列
- macos - 我可以在 macOS 上对一个文件使用多个签名进行协同设计吗?
- python - 如何使用 PyInstaller 将 PY 转换为 EXE
- github - github repo中代码更改时自动触发gitlab cicd
- python - 如何使用 conda 环境的 GCC 7.5.0?
- typescript - 有没有办法使用 TS 扩展来影响运行时?
- c++ - 在函数参数列表中前向声明的类型如何在函数范围之外可见?