Swift -如何保存对CoreData属性的更改



我能够在CoreData中保存对象。我的Entity属性是字符串类型,并保存输入到文本字段中的任何内容。我能够使用FetchedEntityRequest[index]更新属性的任何索引我指定,但我有麻烦保存选定的属性被传递到detailview。请参见下面的示例代码。

//save Attribute
func saveButtonTapped(text: String?) {
if let context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext {
let Entity.attribute: String = Entity(context: context)
Entity.attribute: = text
if context.hasChanges {
do {
try context.save()
} catch {
print(error.localizedDescription)
}
}
// pass attribute to DetailView from List View
@Environment(.managedObjectContext) var managedObjectContext
@FetchRequest(
entity: Entity.entity(),
sortDescriptors: [
NSSortDescriptor(keyPath: Entity.attribute, ascending: true)
]
) var fetchedEntityRequest: FetchedResults<Entity>
var body: some View {
NavigationView {
List {
ForEach(fetchedEntityRequest, id: .self) { entity in
VStack {
HStack {

Text(entity.attribute ?? "")
.font(.headline)
Spacer()
NavigationLink(destination: EditLyricsView(text: entity.attribute ?? "")) {
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)


//DetailView - updating the index specified and saving changes to coredata.

@State var text: String = ""
@Environment(.managedObjectContext) var managedObjectContext
@FetchRequest(
entity: Entity.entity(),
sortDescriptors: [
NSSortDescriptor(keyPath: Entity.attribute, ascending: true)
]
) var fetchedEntityRequest: FetchedResults<Entity>
var body: some View {
NavigationView {
VStack {
TextView(text: $text)
}  .navigationBarTitle(Text("self.text"), displayMode: .inline)
.navigationBarItems(leading: Button("Home") {
presentationMode.wrappedValue.dismiss()

}, trailing: Button("Save") {
fetchedEntityRequest.forEach { i in
var index: Int = 0
fetchedEntityRequest[index].setValue(text, forKey: "Entity.attribute")
presentationMode.wrappedValue.dismiss()
}
}
}

谢谢你!-成功了。请看下面的更新。

NavigationLink(destination: DetailedView(text: entity.attribute ?? "", entity: Entity)) {
}

我创建了一个@声明变量在我的DetailsView类型的实体?

Entity?.setValue(text, forKey: entity.attribute)

最新更新