Я пытаюсь сохранить в CoreData
новую запись, но при попытке получить 1570 Cocoa error
.В этой ошибке единственное, что я вижу nil, это user
, то есть отношение user var
к родительской сущности и два других атрибута, которые устанавливаются как необязательные в инспекторе свойств, поэтому они не требуются.Я не понимаю этого, потому что я выполняю выборку пользователя и проверяю, совпадает ли активный вход в систему с выбранным именем пользователя, и правильное ли значение. Возможно, что-то не видно из сообщения об ошибке.
Это функция:
static func saveBooking(bookingId: String, bookingDate: String, bookingStart: String, bookingEnd: String, customerName: String, price: String, workList: String) throws {
let context = CoreData.databaseContext
let request: NSFetchRequest<User> = User.fetchRequest()
do {
let fetch = try context.fetch(request)
print("@@@@@@@@@@@@@@@@@@ fetching user")
for value in fetch {
if value.name == UserDetails.fullName {
print("User is: \(value.name!)") //correct
if #available(iOS 10.0, *) {
let booking = Booking(context: context)
booking.user?.name = value.name! // results nil and causes error when saving
booking.bookingId = bookingId
booking.bookingDate = bookingDate
booking.bookingStart = bookingStart
booking.bookingEnd = bookingEnd
booking.customerName = customerName
booking.bookingPrice = price
booking.worksList = workList
do {
try context.save()
print("@@@@@@@@@@@@ New booking is saved")
} catch {
print("@@@@@@@@@@@@@@ Error saving new booking")
print(error)
}
} else {
// Fallback on earlier versions
let entityDescription = NSEntityDescription.entity(forEntityName: "Booking", in: context)
let booking = Booking(entity: entityDescription!, insertInto: context)
booking.user?.name = value.name
booking.bookingId = bookingId
booking.bookingDate = bookingDate
booking.bookingStart = bookingStart
booking.bookingEnd = bookingEnd
booking.customerName = customerName
booking.bookingPrice = price
booking.worksList = workList
do {
try context.save()
print("@@@@@@@@@@@@ New booking is saved")
} catch {
print("@@@@@@@@@@@@@@ Error saving new booking")
print(error)
}
}
}
}
} catch {
print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Error in fetching a user")
}
}
, и это печать ошибки:
@@@@@@@@@@@@@@ Error saving new booking
Error Domain=NSCocoaErrorDomain Code=1560 "(null)" UserInfo={NSDetailedErrors=(
"Error Domain=NSCocoaErrorDomain Code=1570 \"The operation couldn\U2019t be completed. (Cocoa error 1570.)\" UserInfo={NSValidationErrorObject=<Booking: 0x6000006240f0> (entity: Booking; id: 0x600002501860 <x-coredata:///Booking/t0A133AFE-B419-4941-AADC-6C9AE234A8EF2> ; data: {\n bookingDate = 20190405;\n bookingEnd = \"15:30\";\n bookingId = 201904051430;\n bookingPrice = \"45.0\";\n bookingStart = \"14:30\";\n customerName = \"vincenzo calia\";\n shopLogoUrl = nil;\n shopName = nil;\n user = nil;\n worksList = \"Revisione Generale, \";\n}), NSValidationErrorKey=user, NSLocalizedDescription=The operation couldn\U2019t be completed. (Cocoa error 1570.)}",
"Error Domain=NSCocoaErrorDomain Code=1570 \"The operation couldn\U2019t be completed. (Cocoa error 1570.)\" UserInfo={NSValidationErrorObject=<Booking: 0x600000630190> (entity: Booking; id: 0x60000251b120 <x-coredata:///Booking/t0A133AFE-B419-4941-AADC-6C9AE234A8EF3> ; data: {\n bookingDate = 20190405;\n bookingEnd = \"18:30\";\n bookingId = 201904051730;\n bookingPrice = \"45.0\";\n bookingStart = \"17:30\";\n customerName = \"vincenzo calia\";\n shopLogoUrl = nil;\n shopName = nil;\n user = nil;\n worksList = \"Revisione Generale, \";\n}), NSValidationErrorKey=user, NSLocalizedDescription=The operation couldn\U2019t be completed. (Cocoa error 1570.)}"
)}
Вы можете определить, где проблема?Большое спасибо как обычно