title: mutableArrayValueForKey NSMutableArray crash when removing objects
body: <p>I'm running into a crash with the following code. <code>self.items</code> is an <code>NSArray</code> of <code>NSManagedObjects</code> with an <code>"id"</code> attribute of type String:</p>
  
  <pre><code>NSMutableArray *allIDs = [self.items mutableArrayValueForKey:@"id"];
  NSArray *presentIDs = // a subset of allIDs
  [allIDs removeObjectsInArray:presentIDs];
  </code></pre>
  
  <p>Here is the crash message:</p>
  
  <pre><code>'Unacceptable type of value for attribute: property = "id"; desired type = NSString; given type = __NSArrayM; value = ....
  </code></pre>
  
  <p>Printing it out in debugger reveals that <code>allID</code> is a <code>NSKeyValueSlowMutableArray</code> instead of <code>__NSArrayM</code> for a regular <code>NSMutableArray</code>.</p>
  
  <p>So I changed it to this and it works:</p>
  
  <p><code>NSMutableArray *allIDs = [[self.items valueForKey:@"id"] mutableCopy];</code></p>
  
  <p>What is the difference between these two calls that would make the former crash but the latter work? I suspect it's something to do with KVO and proxy collections but don't quite understand it.</p>