我想从 coredata 获取数据,并在图表中显示,当应用程序加载时,init func 中的代码存在运行时错误:
让 x=self.marks.wrappedValue.count
错误消息是:Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
整个代码如下:
import SwiftUI
import Charts
import CoreData
struct CareDetails: View {
@Environment(\.managedObjectContext) var context
let timeSpan=["day","week","month","year"]
let care:Care
var marks:FetchRequest<Mark>
@State private var timeSpanIndex = 0
@State private var showSheet = false
private var sessions:[Int]=[]
private var accuracy:[Double]=[]
init(care:Care){
self.care=care
self.marks = FetchRequest(entity:Mark.entity(),
sortDescriptors: [],
predicate: NSPredicate(format:"care_id == %@",care.id!.uuidString))
let x=self.marks.wrappedValue.count
}
var body: some View {
VStack{
Picker(selection: $timeSpanIndex, label: Text("timeSpan")) {
ForEach(0..<timeSpan.count,id:\.self){ idx in
Text(self.timeSpan[idx])
}
}
.pickerStyle(SegmentedPickerStyle())
.padding()
LineChartViewSwiftUI(dataLabel: self.care.unit!,sessions: self.sessions,accuracy: self.accuracy)
Form{
Section{
List{
NavigationLink(destination:
CareDetailsList(marks: self.marks)
.environment(\.managedObjectContext, self.context)
){
Text("显示所有数据")
}
}
}
.multilineTextAlignment(.leading)
}
.padding()
}
}
}