Swift在SwiftUI Init()中访问核心数据实体? (线程1:EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP,subcode=0x0)

问题描述 投票:1回答:1

我有一个名为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()函数中从核心数据中获取一个实体,并将其设置为一个变量?谢谢!

ios swift xcode core-data swiftui
1个回答
0
投票

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()
      }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.