我一直试图让我的详细信息视图工作,但当给出当前从列表中 Select 的项目的预览参数时,它总是给我一个错误Cannot convert value of type 'Item.Type' to expected argument type 'Item'
这是详细的视图
import SwiftUI
import CoreData
struct FishDetailView: View {
var item: Item
@State var image : Data = .init(count: 0)
var body: some View {
Text(item.title ?? "")
Text(item.details ?? "")
Image(uiImage: UIImage(data: item.imageData ?? self.image)!)
.resizable()
.frame(width: UIScreen.main.bounds.width - 34, height: 210)
.cornerRadius(15)
}
}
struct FishDetailView_Previews: PreviewProvider {
static var previews: some View {
FishDetailView(item: Item) **<--- THE ERROR HAPPENS HERE**
}
}
Contentview.swift
import SwiftUI
import CoreData
struct ContentView: View {
// MARK: - PROPERTY
@State var title: String = ""
@State private var showSheet: Bool = false
@State var image : Data = .init(count: 0)
@Environment(\.managedObjectContext) var viewContext
@FetchRequest(
sortDescriptors: [NSSortDescriptor(keyPath: \Item.timestamp, ascending: true)],
animation: .default)
private var items: FetchedResults<Item>
// MARK: - FUNCTION
private func deleteItems(offsets: IndexSet) {
withAnimation {
offsets.map { items[$0] }.forEach(viewContext.delete)
do {
try viewContext.save()
} catch {
let nsError = error as NSError
fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
}
}
}
//: MARK - BODY
var body: some View {
NavigationView {
VStack {
List {
ForEach(items, id: \.self) { item in
NavigationLink(destination: FishDetailView(item: item)) {
Image(uiImage: (UIImage(data: item.imageData ?? self.image) ?? UIImage(systemName: "photo"))!)
.resizable()
.frame(width: UIScreen.main.bounds.width - 34, height: 210)
.cornerRadius(15)
HStack {
Text("\(item.details ?? "")")
}//:HSTACK
}
// TODO: Insert timestamp here with .footnote font
}
}
if showSheet {
AddFishView()
}
}//: LIST
.navigationBarTitle("Fishes", displayMode: .large)
.navigationBarItems(trailing: Button(action: {
self.showSheet.toggle()
})
{
Image(systemName: "camera.fill")
})
.sheet(isPresented: self.$showSheet) {
AddFishView()
}
} //: VSTACK
} //: NAVIGATION
}
// MARK: - PREVIEW
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
let persistenceController = PersistenceController.shared
ContentView().environment(\.managedObjectContext, persistenceController.container.viewContext)
}
}
如果我删除代码的预览部分,细节视图确实可以工作,但这并不是很理想,因为我希望看到我正在做什么,而不必在每次进行更改时在模拟器中打开应用程序.
我似乎弄不明白它为什么会这样,也不知道如何修复它.更聪明的人能帮上忙吗?
代码有点凌乱,因为这只是我正在进行的一个测试,我要将用户映像保存到核心数据中.
编辑:我已经try 了这个建议,但似乎没有解决我的问题PreviewProvider and ObservedObject properties