Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

POP Swift - Structs<T> Extensions and Protocols #11

Open
ghost opened this issue Aug 3, 2016 · 0 comments
Open

POP Swift - Structs<T> Extensions and Protocols #11

ghost opened this issue Aug 3, 2016 · 0 comments

Comments

@ghost
Copy link

ghost commented Aug 3, 2016

Qual o problema ou dúvida?

Na onda do Protocol Oriented Programming, resolvi praticar mais, para tentar fazer algo legal.
Cheguei na parte de fazer o serviço. E me deparei com algumas barreiras.
Acredito que todos que mexeram um pouco com POP barraram nesses problemas, de conseguir estanciar isto ou aquilo, e diversos erros que aparecem.

Eis o que tenho.

Snippet

protocol Storageble: Mappable {
    associatedtype ItemType = Self
}

protocol Requestable {
    associatedtype ItemType
    func request(response: (response: Result<[ItemType], NSError>) -> Void)
}

struct Storage<T: Storageble>: Requestable {
    var path = ""
    var body = ""
    typealias ItemType = T
   // func request
}

O que você já tentou para resolver?

A minha idéia é fazer o seguinte. Para cada objeto que eu quero fazer um request, eu chamo o Storage com o tipo do objeto. Porém para cada objeto, tem um endpoint diferente.
Person vai ser /getPerson City vai ser /getCity e por ai vai.
Podendo ter um body diferente também.

Eu queria extender o Storage quando o T fosse Person por exemplo.
Dai eu setaria o Path e o body para essa extension.

Na verdade quando o protocol fosse outro, como Updatable.
Teria que ter uma outra path e body para o mesmo Tipo de Objeto.

Algo como

Snippet

extension Storage where T == Person, Person: Updatable {}

No código ficaria assim

Snippet

Storage<Person>().request { result in

}

Storage<City>().request { result in

}

Tentei algumas coisas, mas nenhum que deu certo.

Também não se faz sentido isto que estou fazendo, gostaria da opinião de vocês ?

Detalhes sobre seu ambiente

Estou utilizando o Swift 2.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

0 participants