Core data 尝试保存CoreData ManagedObject时崩溃

Core data 尝试保存CoreData ManagedObject时崩溃,core-data,relationship,nsmanagedobject,nsmanagedobjectcontext,Core Data,Relationship,Nsmanagedobject,Nsmanagedobjectcontext,我在尝试保存CoreData托管对象时发生崩溃,如下所示: func saveRide(rideDetails details: Ride) { if managedContext != nil { let ride = RideDetails(context: managedContext!) ride.rideId = details.rideId ride.avgSpeed = Int64(de

我在尝试保存CoreData托管对象时发生崩溃,如下所示:

func saveRide(rideDetails details: Ride)  {
        
        
   if managedContext != nil {
            
    let ride = RideDetails(context: managedContext!)
    ride.rideId =  details.rideId
    ride.avgSpeed = Int64(details.avgSpeed ?? 0)
    ride.blindSpotLeft = Int64(details.blindSpotLeft ?? 0)
    ride.blindSpotRight = Int64(details.blindSpotRight ?? 0)
    ride.distance = details.distance ?? 0.0
    ride.distanceKeeping = Int64(details.distanceKeeping ?? 0)
    ride.forwardCollision =  Int64(details.forwardCollision ?? 0)
    ride.maxAngle = details.maxAngle ?? 0.0
    ride.maxSpeed = details.maxSpeed ?? 0.0
            
    var locations :[LocationDetails] = []
    for locationDetails in details.locations {
                
      let location = LocationDetails(context: managedContext!)
      
      location.lat = locationDetails.lat ?? 0.0
      location.lon = locationDetails.lon ?? 0.0
      location.ride = ride
      
      locations.append(location)
    }
            
    if locations.count > 0 {
                
     let locationsSet = NSOrderedSet(array: locations)
     ride.addToLocations(locationsSet)
    }
            
    do {
          try self.managedContext?.save()
    }
    catch let error {
          
      self.delegate?.didFailuredToCompleteTheOperation?(message: error.localizedDescription)
      #if DEBUG
      print("Failed to save:\(error)")
      #endif
    }
      
   }
我在控制台中得到的错误消息是

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[\u NSCFSet addObject::]:尝试插入nil'

托管对象是:

import Foundation
import CoreData

@objc(RideDetails)
public class RideDetails: NSManagedObject {

}

//
//  RideDetails+CoreDataProperties.swift
//  
//
//  Created by Maria Davidenko on 13/04/2021.
//
//

import Foundation
import CoreData


extension RideDetails {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<RideDetails> {
        return NSFetchRequest<RideDetails>(entityName: "RideDetails")
    }

    @NSManaged public var avgSpeed: Int64
    @NSManaged public var blindSpotLeft: Int64
    @NSManaged public var blindSpotRight: Int64
    @NSManaged public var distance: Float
    @NSManaged public var distanceKeeping: Int64
    @NSManaged public var forwardCollision: Int64
    @NSManaged public var maxAngle: Float
    @NSManaged public var maxSpeed: Float
    @NSManaged public var rideId: String?
    @NSManaged public var timestamp: Date?
    @NSManaged public var locations: NSOrderedSet?

}

// MARK: Generated accessors for locations
extension RideDetails {

    @objc(insertObject:inLocationsAtIndex:)
    @NSManaged public func insertIntoLocations(_ value: LocationDetails, at idx: Int)

    @objc(removeObjectFromLocationsAtIndex:)
    @NSManaged public func removeFromLocations(at idx: Int)

    @objc(insertLocations:atIndexes:)
    @NSManaged public func insertIntoLocations(_ values: [LocationDetails], at indexes: NSIndexSet)

    @objc(removeLocationsAtIndexes:)
    @NSManaged public func removeFromLocations(at indexes: NSIndexSet)

    @objc(replaceObjectInLocationsAtIndex:withObject:)
    @NSManaged public func replaceLocations(at idx: Int, with value: LocationDetails)

    @objc(replaceLocationsAtIndexes:withLocations:)
    @NSManaged public func replaceLocations(at indexes: NSIndexSet, with values: [LocationDetails])

    @objc(addLocationsObject:)
    @NSManaged public func addToLocations(_ value: LocationDetails)

    @objc(removeLocationsObject:)
    @NSManaged public func removeFromLocations(_ value: LocationDetails)

    @objc(addLocations:)
    @NSManaged public func addToLocations(_ values: NSOrderedSet)

    @objc(removeLocations:)
    @NSManaged public func removeFromLocations(_ values: NSOrderedSet)

}

import Foundation
import CoreData

@objc(LocationDetails)
public class LocationDetails: NSManagedObject {

}

import Foundation
import CoreData


extension LocationDetails {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<LocationDetails> {
        return NSFetchRequest<LocationDetails>(entityName: "LocationDetails")
    }

    @NSManaged public var lat: Double
    @NSManaged public var lon: Double
    @NSManaged public var ride: RideDetails?

}
<代码>导入基础 导入CoreData @objc(RideDetails) 公共类ridedeails:NSManagedObject{ } // //RideDetails+CoreDataProperties.swift // // //由玛丽亚·戴维登科于2021年4月13日创作。 // // 进口基金会 导入CoreData 延伸脊尾{ @nonobjc公共类func fetchRequest()->NSFetchRequest{ 返回NSFetchRequest(entityName:“ridedDetails”) } @NSManaged public var avgSpeed:Int64 @NSManaged公共变量blindSpotLeft:Int64 @NSManaged PUBLINDSPOTTRIGHT:Int64 @NSV管理的公共var距离:浮动 @NSM管理的公共var距离保持:Int64 @NSManaged public var forwardCollision:Int64 @NSManaged public var maxAngle:浮点 @NSManaged public var maxSpeed:浮点 @NSManaged public var rideId:字符串? @NSManaged public var时间戳:日期? @NSManaged公共var位置:NSOrderedSet? } //标记:为位置生成的访问器 延伸脊尾{ @objc(插入对象:inLocationStatIndex:) @NSManaged public func insertIntoLocations(uValue:LocationDetails,在idx:Int处) @对象JC(从LocationSatiIndex:中移除对象) @NSManaged public func removeFromLocations(在idx:Int处) @objc(插入位置:索引:) @NSManaged public func insertIntoLocations(Value:[LocationDetails],位于索引:NSIndexSet) @objc(RemovelocationStatIndex:) @NSManaged public func removeFromLocations(在索引处:NSIndexSet) @objc(replaceObjectInLocationStatIndex:withObject:) @NSManaged public func replaceLocations(在idx:Int处,值为:LocationDetails) @objc(替换位置索引:带位置:) @NSManaged public func replaceLocations(索引处:NSIndexSet,值:[LocationDetails]) @objc(添加位置对象:) @NSManaged public func addToLocations(u值:LocationDetails) @objc(removeLocationsObject:) @NSManaged public func removeFromLocations(\值:LocationDetails) @objc(添加位置:) @NSManaged public func addToLocations(u值:NSOrderedSet) @objc(移除速度:) @NSManaged public func removeFromLocations(u值:nOrderedSet) } 进口基金会 导入CoreData @objc(位置详细信息) 公共类位置详细信息:NSManagedObject{ } 进口基金会 导入CoreData 扩展位置详细信息{ @nonobjc公共类func fetchRequest()->NSFetchRequest{ 返回NSFetchRequest(entityName:“LocationDetails”) } @NSManaged public var lat:双精度 @NSManaged公共变量lon:Double @NSVAR管理的公共设施:RideDetails? } 我的猜测是这种关系可以做到这一点,但我以前从未在CoreData中处理过关系(仅在RDBMS中),所以我正在努力修复它。如果有人知道如何修复它,请帮助,这是错误生产。 提前感谢,,
Maria.

提示:添加异常断点。现在我开始无法保存:Error Domain=NSCocoaErrorDomain Code=133010“无法保存引用在其自身存储之外的对象。”