@NSManaged public var deck: [card]?
card
этой строки кода является пользовательским классом, вы не можете использовать его в качестве типа данных в NSManagedObject.
Решение состоит в том, чтобы сделать Card подклассом NSObject:
class Card: NSObject {