我有一个名为Solve的核心数据实体,我正试图从fetch请求中获取第一个元素,并将其设置为swift UI视图中init()函数中的一个变量。
var fetchRequestAvgerage:FetchRequest<Solve>
var solve0 = Solve()
init(){
let request: NSFetchRequest<Solve> = Solve.fetchRequest()
request.sortDescriptors = [NSSortDescriptor(keyPath: \Solve.date, ascending: false)]
fetchRequestAvgerage = FetchRequest<Solve>(fetchRequest: request)
solve0 = fetchRequestAvgerage.wrappedValue.first!
}
然而,程序在以下一行中崩溃了 Solve0 = fetchRequestAvgerage.wrappedValue.first!
我也试着做了一个可选的值,但还是会崩溃,并给出错误代码 Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0.)有谁知道我怎样才能在我的init()函数中从核心数据中获取一个实体,并将其设置为一个变量?谢谢!
该 fetchRequestAvgerage.wrappedValue
不存在于 init
然而,用在 .onAppear
譬如
struct Demo: View {
var fetchRequestAvgerage:FetchRequest<Solve>
var solve0 = Solve()
init(){
let request: NSFetchRequest<Solve> = Solve.fetchRequest()
request.sortDescriptors = [NSSortDescriptor(keyPath: \Solve.date, ascending: false)]
fetchRequestAvgerage = FetchRequest<Solve>(fetchRequest: request)
}
var body: some View {
Text("Demo")
.onAppear {
self.solve0 = fetchRequestAvgerage.wrappedValue.first ?? Solve()
}
}
}