Protocol type cannot conform to protocol because only concrete types can conform to protocols : <p>Within the app, we have two types of Stickers, String and Bitmap. Each sticker pack could contain both types. This is how I declare the models:</p>

<pre><code>// Mark: - Models

protocol Sticker: Codable {
}

public struct StickerString: Sticker,  Codable, Equatable {
    let fontName: String
    let character: String
}

public struct StickerBitmap: Sticker,  Codable, Equatable {
    let imageName: String
}
</code></pre>

<p>After the user chooses some stickers and used them, we want to save the stickers into <code>UserDefaults</code> so we can show him the "Recently Used" Sticker tab. I'm trying to Decode the saved <code>[Sticker]</code> array:</p>

<pre><code>let recentStickers = try? JSONDecoder().decode([Sticker].self, from: data)
</code></pre>

<p>But I get the following compile error:</p>

<pre><code>Protocol type 'Sticker' cannot conform to 'Decodable' because only concrete types can conform to protocols
</code></pre>

<p>I can't understand why as I declared <code>Sticker</code> as <code>Codable</code> which also implement <code>Decodable</code>. Any help would be highly appreciated! </p>
