title: How do I copy or move an NSManagedObject from one context to another?
body: <p>I have what I assume is a fairly standard setup, with one scratchpad MOC which is never saved (containing a bunch of objects downloaded from the web) and another permanent MOC which persists objects. When the user selects an object from scratchMOC to add to her library, I want to either 1) remove the object from scratchMOC and insert into permanentMOC, or 2) copy the object into permanentMOC. The <a href="http://developer.apple.com/mac/library/documentation/cocoa/conceptual/CoreData/Articles/cdFAQ.html" rel="noreferrer">Core Data FAQ</a> says I can copy an object like this:</p>
  
  <pre><code>NSManagedObjectID *objectID = [managedObject objectID];
  NSManagedObject *copy = [context2 objectWithID:objectID];
  </code></pre>
  
  <p>(In this case, context2 would be permanentMOC.) However, when I do this, the copied object is faulted; the data is initially unresolved. When it does get resolved, later, all of the values are nil; none of the data (attributes or relationships) from the original managedObject are actually copied or referenced. Therefore I can't see any difference between using this objectWithID: method and just inserting an entirely new object into permanentMOC using insertNewObjectForEntityForName:.</p>
  
  <p>I realize I can create a new object in permanentMOC and manually copy each key-value pair from the old object, but I'm not very happy with that solution. (I have a number of different managed objects for which I have this problem, so I don't want to have to write and update copy: methods for all of them as I continue developing.) Is there a better way? </p>