From 72758675dcec4ddf7759756389950f70eca2c391 Mon Sep 17 00:00:00 2001 From: panxi Date: Mon, 2 Dec 2019 12:04:32 -0500 Subject: [PATCH] fix array decode if it's nil --- MVMCore/MVMCore/Models/Model/ModelRegistry.swift | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/MVMCore/MVMCore/Models/Model/ModelRegistry.swift b/MVMCore/MVMCore/Models/Model/ModelRegistry.swift index b0246fe..a141ed4 100644 --- a/MVMCore/MVMCore/Models/Model/ModelRegistry.swift +++ b/MVMCore/MVMCore/Models/Model/ModelRegistry.swift @@ -65,13 +65,17 @@ extension KeyedDecodingContainer where Key: CodingKey { public func decodeArrayIfPresent(codingKey: KeyedDecodingContainer.Key, typeCodingKey: C) throws -> [Model]? { - - var unkeyedContainer = try nestedUnkeyedContainer(forKey: codingKey) + var unkeyedContainer: UnkeyedDecodingContainer? + do { + unkeyedContainer = try nestedUnkeyedContainer(forKey: codingKey) + } catch { + return nil + } var otherUnkeyedContainer = try nestedUnkeyedContainer(forKey: codingKey) var attributes = [Model.Type]() - while !unkeyedContainer.isAtEnd { + while !unkeyedContainer!.isAtEnd { - let meta = try unkeyedContainer.nestedContainer(keyedBy: C.self) + let meta = try unkeyedContainer!.nestedContainer(keyedBy: C.self) guard let type = try meta.decodeIfPresent(String.self, forKey: typeCodingKey) else { return nil }