Swift 访问 SwiftUI Init() 中的核心数据实体? (线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)

Posted

技术标签:

【中文标题】Swift 访问 SwiftUI Init() 中的核心数据实体? (线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)【英文标题】:Swift accessing core data entities in SwiftUI Init()? (Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) 【发布时间】:2020-05-15 17:27:40 【问题描述】:

我有一个名为 Solve 的核心数据实体,我正在尝试从获取请求中获取第一个元素,并将其设置为我的 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() 函数中的核心数据中获取一个实体并将其设置为变量?谢谢!

【问题讨论】:

【参考方案1】:

fetchRequestAvgerage.wrappedValueinit 中还没有,在.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()
      
  

【讨论】:

@JFoss,不客气。 What should I do when someone answers my question?

以上是关于Swift 访问 SwiftUI Init() 中的核心数据实体? (线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)的主要内容,如果未能解决你的问题,请参考以下文章

如何构造值以使所有视图都可以在 Swift/SwiftUI 中访问其值?

SwiftUI ListView 没有访问 ForEach 循环

将核心数据从 Swift 迁移到 SwiftUI

SwiftUI |从另一个 SwiftUI 视图访问 PickerView 选择

如何在 SwiftUI 中随时从子视图作为父视图访问数据?

Swift UI 将绑定传递给另一个视图以通过 init 发出警报