【发布时间】:2020-01-06 15:57:03
【问题描述】:
当输入TextField 时,我无法完成将值与核心数据一起存储,并在进入视图时再次显示的任务。有可能吗?
我需要存储name 和surname。为此,我创建了 ProfileData 数据模型,但找不到任何相关信息。如何让它正常工作。
请在下面找到代码:
import SwiftUI
import CoreData
struct ProfileView: View {
@State private var name: String = ""
@State private var surname: String = ""
@Environment(\.managedObjectContext) var managedObjectContext
@FetchRequest(
entity: ProfileData.entity(),
sortDescriptors: [
NSSortDescriptor(keyPath: \ProfileData.name, ascending: true),
NSSortDescriptor(keyPath: \ProfileData.surname, ascending: true),
]
) var profile: FetchedResults<ProfileData>
@EnvironmentObject var profile1: ProfileData
var body: some View {
VStack {
HStack {
VStack {
HStack {
Text("Meno:")
.font(.headline)
.padding()
TextField("", text: $name, onCommit: {
self.profile1.name = self.name
try? self.managedObjectContext.save()})
.onAppear {
self.name = self.profile.name != nil ? "\(self.profile.name!)" : "Zadajte meno" //here I get error Value of type 'FetchedResults<ProfileData>' has no member 'name'
}
.onDisappear {
self.profile1.name = self.name
try? self.managedObjectContext.save()
}
} .padding(.leading, 37)
}
HStack {
Text("Priezvisko:")
.font(.headline)
.padding()
TextField("Zadajte priezvisko", text: $surname)
}
}
}
}
.navigationBarTitle(Text("Profil"))
}
}
这是我的 ProfileData+CoreClassData.swift:
import Foundation
import CoreData
@objc(ProfileData)
public class ProfileData: NSManagedObject {
}
这是我的 ProfileData+CoreDataProperties.swifft
//
// ProfileData+CoreDataProperties.swift
// UcmMap
//
// Created by Jakub Adamec on 06/01/2020.
// Copyright © 2020 Jakub Adamec. All rights reserved.
//
//
import Foundation
import CoreData
extension ProfileData {
@nonobjc public class func fetchRequest() -> NSFetchRequest<ProfileData> {
return NSFetchRequest<ProfileData>(entityName: "ProfileData")
}
@NSManaged public var name: String?
@NSManaged public var surname: String?
}
【问题讨论】:
-
您在此处更新
profile1,但它保存在哪里?另外,你已经声明了一个 fetch 请求,但你没有使用它,这是故意的吗? -
我现在没有使用它,因为首先我想关注应用程序启动的状态,
name和surname中没有存储任何内容。我明白你所说的保存是什么意思,但是在我发布这个问题时,我找不到更多可以使用 swiftui 保存带有核心数据的文本字段,所以这就是我所能准备的。 -
将代码更新到最新版本。