【发布时间】:2020-08-02 03:56:14
【问题描述】:
当用户想要创建新记录时,我想 a) 转到新视图,b) 在.onAppear 期间创建记录,然后 c) 使用新创建的记录更新视图。
第一部分很简单。我有一个NavigationLink,它与用户名一起作为属性进入新视图。我可以在.onAppear 期间创建新记录。但这是事情变得棘手的最后一部分。
我尝试使用同时手势创建记录和切换视图,我尝试使用切换视图功能加载新视图,以及大约十几个灵感较少的想法。问题总是归结为:如何在新记录创建后更新 FetchRequest? 注意:我需要对新创建记录的引用,以便用户可以添加内容到记录。
这是目前为止的代码...
struct RecordView: View {
@Environment(\.managedObjectContext) var moc
let appDelegte = UIApplication.shared.delegate as! AppDelegate
var fetchedRecords: FetchRequest<Record>
var currentUser: User
init(recordNumber: String) {
fetchedRecords = FetchRequest<Record>(entity: Record.entity(), sortDescriptors: [], predicate: NSPredicate(format: "user.recordNumber = %@", recordNumberNumber))
}
var body: some View {
Text(fetchedRecords.wrappedValue.first.recordNumber)
}
.onAppear {
self.CreateNewRecord()
}
func CreateNewRecord() {
let newRecord = Record(context: self.moc)
newRecord.id = UUID()
let recordNumber = "AABBCCDDEE"
user.addToRecords(newRecord)
appDelegate.saveContext()
//This is when the fetched request should fetch the new record and the Text view should be updated.
}
}
【问题讨论】: