Q:

Core Data Context.save() error: Cocoa error 1630

Weird error, I have 24 objects of the same Entity, only 15 of them save in context, the ones who have the attribute on_campus = false 
25/25 Place objects are successfully constructed and passed back to the VC, but the Places that are on_campus do not save in the context.
I'm brand new to Core Data so any suggestions would be greatly appreciated
I've updated the end of this post with the error I am receiving, it is a problem with saving the Place's Relationship Entity, Business_Period
ViewController:
func getPlaces(data: JSON) -> [[PTPlace]] {
    var place_prototypes: [PTPlace] = []
    for (key, value) in data {
            do {
                if var place = try? PTPlace(data: value.dictionaryObject!) {
                    place_prototypes.append(place)
                }
            }
            catch {
                print(error)
            }

    }
    self.updateDatabase(with: place_prototypes)
    return place_prototypes.group(by: {$0.section_name} )
}

func updateDatabase(with prototypes: [PTPlace]) {
    container?.performBackgroundTask { [weak self] context in
        for prototype in prototypes {
            var place = try? Place.findOrCreatePlaceFromProto(matching: prototype, in: context)
        }
        try? context.save()

    }
}

Place.swift
class func findOrCreatePlaceFromProto(matching prototype: PTPlace, in context: NSManagedObjectContext) throws -> Place {

    let request: NSFetchRequest<Place> = Place.fetchRequest()
    request.predicate = NSPredicate(format: "id= %@", prototype.place_id)

    do {
        let matches = try context.fetch(request)
        return matches[0]
    }
    catch {
        throw error
    }

    let place = Place(context: context)
    place.name = prototype.place_name
    place.id = prototype.place_id
    place.on_campus = prototype.on_campus

    let place_type = try Place_Type.findOrCreatePlaceType(matches: prototype.section_name, in: context)
    place.addToTypes(place_type)

    if place.types?.count == 0 {
        print("\(place.name!) has no types")
    }

    place.address = prototype.formatted_address
    place.website = prototype.website
    place.phone_number = prototype.phone_number
    if prototype.all_hours != nil {
        for hours_proto in prototype.all_hours! {
            let hours = Business_Period.createBusinessPeriodFromProto(matching: hours_proto, in: context)
            place.addToPeriods(hours)
        }
    }

    print("successfully created \(String(describing: place.name!)): \(String(describing: place.id!))")
    return place
}

Place_Type.swift
class Place_Type: NSManagedObject {
static var id: Int16 = 0

class func findOrCreatePlaceType(matches name: String, in context: NSManagedObjectContext) throws -> Place_Type {
    if name != "On Campus" {
        print("place_type name to fetch: \(name)")
    }
    let request: NSFetchRequest<Place_Type> = Place_Type.fetchRequest()
    request.predicate = NSPredicate(format: "name= %@", name)

    do {
        let matches = try context.fetch(request)
        if matches.count > 0 {
            assert(matches.count == 1, "Place_Type.findOrCreatePlaceType -- database inconsistency")
            return matches[0]
        }

    }
    catch {
        throw error
    }

    let place_type = Place_Type(context: context)
    print("Attempting to create place_type: \(name)")

    id += 1
    place_type.name = name
    place_type.id = id
    print("successfully created place_type \(String(describing:place_type.id)): \(String(describing: place_type.name))")
    return place_type
}

}
UPDATE: This is the error I am getting
"Error Domain=NSCocoaErrorDomain Code=1630 
\"The operation couldn\U2019t be completed. (Cocoa error 1630.)\"
UserInfo={NSValidationErrorObject=<Mishigas.Business_Period: 0x60000009c930> (entity: Business_Period; id: 0x600000037b00 
<x-coredata:///Business_Period/t85267661-0D93-4F9B-A982-1CE66D00CDD669> 
data: {
end = \"2017-09-02 04:00:00 +0000\";
name = Default;
place = \"0x600000038000 
<x-coredata:///Place/t85267661-0D93-4F9B-A982-1CE66D00CDD667>\";
start = \"2017-09-01 10:00:00 +0000\";
}), 
NSValidationErrorValue=2017-09-02 04:00:00 +0000, 
NSValidationErrorKey=end, 
NSLocalizedDescription=The operation couldn\U2019t be completed. (Cocoa error 1630.)}"

Business_Period.Swift
class func createBusinessPeriodFromProto(matching prototype: PTEvent, in context: NSManagedObjectContext) -> Business_Period {
    let business_period = Business_Period(context: context)
    business_period.start = prototype.start as NSDate
    business_period.end = prototype.end as NSDate
    business_period.name = "Default"
    return business_period
}

Business Period inherits from an Abstract Entity named "Event" with the properties:
name: String?
start: NSDate
end: NSDate

Event.swift
class Event: NSManagedObject {

}

A:

Solved this problem!
The error, though repeated many many times, was always originating from the same entity and attribute, so I deleted and re-added that attribute (Business_Period.end) and the error went away.

"Error Domain=NSCocoaErrorDomain Code=1630 
\"The operation couldn\U2019t be completed. (Cocoa error 1630.)\"
UserInfo={NSValidationErrorObject=<Mishigas.Business_Period: 0x60000009c930> (**entity: Business_Period**; id: 0x600000037b00 
<x-coredata:///Business_Period/t85267661-0D93-4F9B-A982-1CE66D00CDD669> 
data: {
end = \"2017-09-02 04:00:00 +0000\";
name = Default;
place = \"0x600000038000 
<x-coredata:///Place/t85267661-0D93-4F9B-A982-1CE66D00CDD667>\";
start = \"2017-09-01 10:00:00 +0000\";
}), 
NSValidationErrorValue=2017-09-02 04:00:00 +0000, 
**NSValidationErrorKey=end**, 
NSLocalizedDescription=The operation couldn\U2019t be completed. (Cocoa error 1630.)}"

