我将来自Core Data Database的对象推送到带有文本字段的详细信息页面。
当用户更改文本字段中的文本并按保存时,所做的更改应保存到核心数据DB。
问题:我不知道如何修改/更新/更改现有的核心数据实体。
我可能需要通过@FetchRequest获取原始图片,但是每次尝试都会遇到一些问题。
问题1:假设实体的object.id为UUID,我该如何 在SwiftUI中获取该对象?
问题2:如何用更改后的内容覆盖获取的对象 文本字段的内容?
struct ProductDetail: View {
@State var barcode: Barcode
@Environment(\.presentationMode) var presentationMode
@Environment(\.managedObjectContext) var context
//let datahandler = Datahandler()
var body: some View {
VStack {
HStack {
Text("Barcode: ")
Spacer()
TextField("Barcode", text: Binding($barcode.code, ""))
.textFieldStyle(RoundedBorderTextFieldStyle())
.frame(width: 250, alignment: .trailing)
}
HStack {
Text("Amount: ")
Spacer()
TextField("Amount", text: Binding($barcode.amount, ""))
.textFieldStyle(RoundedBorderTextFieldStyle())
.frame(width: 250, alignment: .trailing)
.keyboardType(.numberPad)
}
HStack{
Button("Back") {
self.presentationMode.wrappedValue.dismiss()
}
Spacer()
Button("Save"){
//self.datahandler.updateBarcode(barcode: self.object)
self.editBarcode(barcode: barcode)
self.presentationMode.wrappedValue.dismiss()
}
}
.padding()
}
.padding()
}
func editBarcode(barcode: Barcode) {
// Question 1: Fetch Original object using barcode.id
// Question 2: How to but barcode into context so it can overwrite the core data original?
try? context.save()
}
尝试:
func editBarcode(barcode: Barcode) {
@FetchRequest(sortDescriptors: [], predicate: NSPredicate(format: "self.id IN %@", barcode.id)) var results: FetchedResults<Barcode>
results.first?.amount = barcode.amount
results.first?.code = barcode.code
try? context.save()
}
错误:
参数类型为“ UUID?”不符合预期的'CVarArg'类型
不能在属性初始化程序中使用实例成员“条形码”; 属性初始化程序在“自我”可用之前运行
本地属性尚不支持属性包装器