-
Notifications
You must be signed in to change notification settings - Fork 1
Doesn’t encode object with NSSet? property #1
Copy link
Copy link
Open
Description
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?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels