尝试保存 CoreData ManageddObject 时崩溃

我在尝试像这样保存 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”而终止应用程序,原因:“-[__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 中处理过关系(仅在 RDBMS 中),所以我正在努力修复它。如果有人知道如何修复它,请帮忙,这是错误产生。 提前致谢, 玛丽亚。

iCMS 回答:尝试保存 CoreData ManageddObject 时崩溃

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/487353.html

大家都在问