From 9dde688feb3552812c6c40d1e15293d4f8c5b019 Mon Sep 17 00:00:00 2001 From: Danish Phiroz Date: Wed, 16 Oct 2024 11:44:50 -0400 Subject: [PATCH] Type casting failed error fixed. --- .../MVMCore/Models/Model/ModelRegistry.swift | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/MVMCore/MVMCore/Models/Model/ModelRegistry.swift b/MVMCore/MVMCore/Models/Model/ModelRegistry.swift index dbb2afa..61fd511 100644 --- a/MVMCore/MVMCore/Models/Model/ModelRegistry.swift +++ b/MVMCore/MVMCore/Models/Model/ModelRegistry.swift @@ -365,11 +365,26 @@ public extension UnkeyedDecodingContainer { } // Now get the decoder to use for the type let decoder = try self.superDecoder() - if let model = try type.init(from: decoder) as? T { + let model = try type.init(from: decoder) + + if let model = model as? T { models.append(model) } else { - MVMCoreLoggingHandler.logDebugMessage(withDelegate: "ModelRegistry Error decoderError: \(typeCodingKey)") - throw ModelRegistry.Error.decoderError + let typeName = "\(T.self)".components(separatedBy: "&").last?.trimmingCharacters(in: .whitespaces) ?? "\(T.self)" + let mirror = Mirror(reflecting: model) + + let logMessage = """ + ModelRegistry Error: + Model Type Casting Failed: + - Attempted to cast value of type '\(mirror.subjectType)' to '\(typeName)'. + - Molecule Identifier: '\(identifier)' + - Debug Context: + Actual Type: '\(mirror.subjectType)' + Expected Type: '\(typeName)' + """ + + MVMCoreLoggingHandler.logDebugMessage(withDelegate: logMessage) + throw ModelRegistry.Error.decoderErrorModelNotMapped(identifer: identifier, codingKey: typeCodingKey, codingPath: nestedContainer.codingPath) } }