title: Core Data on client (iOS) to cache data from a server Strategy
body: <p>I have written many iOS apps that was communicating with the backend. Almost every time, I used HTTP cache to cache queries and parse the response data (JSON) into objective-C objects. For this new project, I'm wondering if a Core Data approach would make sense.</p>
  
  <p>Here's what I thought: </p>
  
  <p>The iOS client makes request to the server and parse the objects from JSON to CoreData models.</p>
  
  <p>Every time I need a new object, instead of fetching the server directly, I parse CoreData to see if I already made that request. If that object exists and hasn't expired, I use the fetched object.</p>
  
  <p>However, if the object doesn't exist or has expired (Some caching logic would be applied here), I would fetch the object from the server and update CoreData accordingly.</p>
  
  <p>I think having such an architecture could help with the following:
  1. Avoid unnecessary queries to the backend
  2. Allow a full support for offline browsing (You can still make relational queries with DataCore's RDBMS)</p>
  
  <p>Now here's my question to SO Gods: </p>
  
  <ol>
  <li>I know this kinda requires to code the backend logic a second time (Server + CoreData) but is this overkill?</li>
  <li>Any limitation that I have under estimated?</li>
  <li>Any other idea?</li>
  </ol>