如何让 SwiftUI 与 Core Data 一起工作(启动项目后)?

时间:2021-05-01 14:35:02

标签: core-data swiftui

我在尝试让 Xcode 使用 Core Data 时遇到此错误。任何帮助将不胜感激。

const Parent = () => {
  const [state, setState] = React.useState(false);
  
  const toggleState = () => setState(prevState => !prevState)
  
  return (
    <div>
      <p>Parent State: {String(state)}</p>
      <Child toggleState={toggleState}/>
    </div>
  );
};

const Child = ({toggleState}) => {
  return <button onClick={toggleState}>Child Button</button>;
};



ReactDOM.render(<Parent />, document.getElementById("root"));

把其他环境都注释掉,让持久化环境只用在顶层,还是出现同样的错误。

这是应用顶级 Swift 文件:

导入 SwiftUI 导入核心数据

<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div id="root"></div>

}

这是使用持久控制器的文件(Core Data xcdatamodeld 有一个名为 img 的二进制数据属性)

持久性.Swift

Context in environment is not connected to a persistent store coordinator: <NSManagedObjectContext: 0x6000008a8820>

PS:这个项目我不是用 Core Data 开始的,我是后来加的

1 个答案:

答案 0 :(得分:1)

您的 @FetchRequest 在初始化时没有 NSManagedObjectContext。您正在使用此行创建它

let persistenceController = PersistenceController.shared

您的 @FetchRequest 必须向下移动到 ContentView 才能工作。

必须调用这一行

 .environment(\.managedObjectContext, persistenceController.container.viewContext)

初始化包含 View@FetchRequest