 <p>Your solution is not so bad. The queuing of the HTTP requests is really a standard thing to do, so that should not be a big problem. </p> <p>Just do <em>not</em> use the objectIDs on your server. They are really unique to the database on one particular device. Their main purpose is to identify managed objects across different managed object contexts. Instead us your own id, maybe a server generated one that is authoritative. </p> <p>The obvious "elegant" alternative is to use Apple's integration of iCloud with Core Data. Then you have to do absolutely nothing on the server side. The drawback is that you cannot access the user info (which might be desired). The much more significant drawback (showstopper) is that it does not work reliably (see my SOF question <a href="http://stackoverflow.com/questions/14478517/more-icloud-core-data-synching-woes">here</a>). </p>