【发布时间】:2020-11-28 20:42:28
【问题描述】:
我使用@State 变量(title, description) 与另一个视图(UITextView)进行通信。该视图有一个绑定字符串变量(text)。
我想使用特定的 CoreData 实体 (Item) 来更新我的 @State 变量,因此 UITextView 中的文本会在视图出现时更新(因此 UITextView 不会出现空白)。据我了解,我首先应该以某种方式将该 CoreData 实体变量分配给我的 @State 变量,并且当我从 UITextView 对我的 @State 变量进行更新时,我应该将上下文保存到我的 CoreData 实体中。我使用 init() 进行初始分配,并且在进行实时预览调试之前不会出现任何错误。我收到此错误(作为调试器消息):
调用 NSManagedObject 类 'Item' 上的指定初始化程序失败
此外,预览中缺少文本。
也许还有其他方法可以做我想做的事?
这是我的代码:
主视图
struct DetailView: View {
@ObservedObject var item: Item = Item()
@State private var title = ""
@State private var description = ""
init (item: Note)
{
self.item = item
self.title = item.title!
...
TextView(text: self.$title...
...
TextView(text: self.$details...
...
文本视图
struct TextView: UIViewRepresentable {
@Binding var text: String
...
func updateUIView(_ uiView: UITextView, context: Context) {
uiView.text = text
...
附:当我直接在CoreData实体的属性(例如self.item.title)中直接传递(忽略我的@State变量的存在)作为UITextView显示文本的参数实际上有效但我不知道如何将更改从UITextView保存到CoreData实体直接
【问题讨论】:
-
不要调用 Item(),因为您在 init 方法中注入了一个实例
标签: swift core-data swiftui ios13