Now, we want to create a repository that provides us with entities so that we can apply the functional programming features included in Swift to retrieve and process data from these entities. First, we will create an EntityProtocol
protocol that defines the requirements for an entity. We want any class that conforms to this protocol to have a read-only id
property of the Int
type to provide a unique identifier for the entity:
public protocol EntityProtocol { var id: Int { get } }
The next lines create a Repository<T>
generic class that specifies that T
must conform to the recently created EntityProtocol
protocol in the generic type constraint. The class declares a getAll
method that we will override in the subclasses:
public class Repository<T: EntityProtocol> {
public func getAll() -> [T] {
return [T]()
}
}
The next lines create the Entity
class, which is the base class for all the entities. The class...