New Thoughts about LRestClient
I was talking about solutions like
Parse allows you to get data from model, however when I think about it, it’s actually impossible. The fundamental difference between Parse and LModel is that Parse uses subscript to get properties and thus is weak-typed, while LModel is not, and either Swift or C (which is what Objective-C builds upon) is strong-typed.
Consider this: build a rest client into a data model may seem to be too much, but a bigger problem is that the follow code is impossible in
Instead we’ll have to write something like
class LRestObject<T:LFModel>: LFModel which doesn’t make sense at all. I mean, if we have to write
class MyRestObject<T:MyRestObject>: LRestObject<T>, why we don’t write
class MyRestClient<T:MyRestModel>: LRestClient instead? In this case split data model and REST client is the right way to go. Even in Objective-C this is basically cannot be done.
I also thought about coming up with something like
class LFRestTableController<MyModel>: LFTableController, but generic type cannot work with interface builder since in IB class needs to be determined at design-time, while I suspect Swift generic classes get generated at compile-time (maybe they implement it in run-time, but that would not be a good idea perform-wise).
In the end, I need to address all of these and come up with some solution. I have described more of them in my tech blog and will write a post about my final solution later.