Code Monkey home page Code Monkey logo

coredatable's Issues

Doesn’t encode object with NSSet? property

I'm trying to encode the following model:

final class ManagedHabit: NSManagedObject, CoreDataCodable {
    @NSManaged var id: String
    @NSManaged var name: String
    @NSManaged var notifications: NSSet?
    
    enum CodingKeys: String, CoreDataCodingKey {
        case id
        case name
        case notifications
    }
}

final class ManagedNotification: NSManagedObject, CoreDataCodable {
    @NSManaged var id: String
    @NSManaged var userNotificationId: String
    @NSManaged var enabled: Bool
    @NSManaged var habit: ManagedHabit
    
    enum CodingKeys: String, CoreDataCodingKey {
        case id
	case userNotificationId
	case enabled
    }
}

…

let encoder = JSONEncoder()
let jsonData = try encoder.encode(object)

I get an error.

The CoreDataEncoder class contains a method

private func encode (_ relationship: NSRelationshipDescription, object: ManagedObject, key: Keys, container: KeyedContainer) throws

that uses NSStringFromClass in its implementation, which always returns nil. This is because you need to use NSClassFromString(“<ModuleName>.<ClassName>”). I checked this and it works.

The same problem is present in the CoreDataDecodable extension in the method

private func set (_ relationship: NSRelationshipDescription, from container: CoreDataKeyedDecodingContainer <Self>, with codingKey: CodingKeys) throws

Please, can you fix this?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.