如何解决Back4App - 指向未保存对象的指针 代码:106,版本:1.19.1
-
Invoice
类。 -
Invoice
包含Array
个InvoiceEmployee
指针 -
InvoiceEmployee
包含InvoiceItem
个对象的数组
for employeeDataSet in someDataSet {
for viewmodelData in someDataSet {
let pfInvoiceItem = PFObject(className: "InvoiceItem")
pfInvoiceItem.setValue(viewmodelData.customerRate,forKey: "customerRate")
pfInvoiceItem.setValue(viewmodelData.customerHours,forKey: "customerHours")
pfInvoiceItem.setValue(viewmodelData.total,forKey: "total")
invoiceItems.append(pfInvoiceItem)
}
let pfInvoiceEmployee = PFObject(className: "InvoiceEmployee")
pfInvoiceEmployee.setValue(employeeDataSet.username,forKey: "username")
pfInvoiceEmployee.setValue(employeeDataSet.projectEmployee,forKey: "projectEmployee")
pfInvoiceEmployee.setValue(invoiceItems,forKey: "invoiceItems")
我收到此错误
Pointer to an unsaved object. (Code: 106,Version: 1.19.1)
关于这个保存操作:
func createInvoice(with invoice: Invoice,completion: @escaping (Result<Bool,NSError>) -> ()) {
guard let payPeriod = invoice.payPeriod?.getPFPayPeriod(),let project = invoice.project?.getPFProject() else {
let error = NSError(domain: "OURTEAM",code: 0,userInfo: [NSLocalizedDescriptionKey: "Save invoice failure"])
completion(.failure(error))
return
}
let parSEObject = PFObject(className:"Invoice")
parSEObject["project"] = project
parSEObject["payPeriod"] = payPeriod
parSEObject["title"] = "Some"
parSEObject["total"] = invoice.total
parSEObject["invoiceEmployees"] = invoice.getPFInvoiceEmployees()
parSEObject.saveInBackground {
(success: Bool,error: Error?) in
if (success) {
completion(.success(true))
} else {
let error = NSError(domain: "OURTEAM",userInfo: [NSLocalizedDescriptionKey: "Create invoice failure"])
completion(.failure(error))
}
}
}
但是当我查看管理面板时,我可以看到所有记录都已正确保存。这意味着 InvoiceItem
记录获得了所有 objectIds 并且需要的列设置了值。相同的 fo InvoiceEmployee
记录和数据库中的 Invoice 记录。
还有 parSEObject.saveInBackground
返回成功。
要知道在我保存 InvoiceItem
之前我没有保存 InvoiceEmployee
和 Invoice
。
通常我使用联合类,没有这样的问题,因为我可以单独保存对象。现在我想按需保存发票(当用户完成所有本地记录时)。
我想可能是首先创建 Invoice
然后将所有需要的数据添加到其中的解决方案。但这意味着我需要等待完成所有与将员工及其项目添加到 Invoice
相关的回调,如果用户取消发票的创建,那么我需要删除数据库中的记录,这是一个有点过载的流程。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。