title: MKPolyline -> NSKeyedArchiver -> NSData SIGABRT
body: <p>In my app I am trying to store an array of <code>MKPolylines</code> into <code>NSUserDefaults</code>. </p>
  
  <pre><code>NSData *data = [NSKeyedArchiver archivedDataWithRootObject:overlays];
  [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"theKey"];
  </code></pre>
  
  <p>Gives:</p>
  
  <pre><code>[MKPolyline encodeWithCoder:]: unrecognized selector sent to instance 0x169c20`
  Terminating app due to uncaught exception 
  'NSInvalidArgumentException', reason: '-
  [MKPolyline encodeWithCoder:]: unrecognized 
  selector sent to instance 0x1c57e0'
  </code></pre>
  
  <p>Edit: I made some progress. <code>MKPolylineView</code> conforms to the <code>NSCoding</code> protocol, so I have converted my array of <code>MKPolyline</code>s into an array of <code>MKPolylineView</code>s. The problem is that when I want to add them back to a map later, I can't convert them back to <code>MKPolyline</code>s. Any idea how to do that?</p>
  
  <p>Crashes at this code:</p>
  
  <pre><code>NSData* data = [[NSUserDefaults standardUserDefaults] objectForKey:@"theKey"];
  NSArray* overlays = [NSKeyedUnarchiver unarchiveObjectWithData:data];
  
  for(MKPolylineView* a in overlays)
      [mapView addOverlay:a.overlay];
  
  2011-10-17 21:15:56.416 Trail Tracker[4269:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
  *** First throw call stack:
  (0x34b2f8bf 0x36c3a1e5 0x34a8420f 0x35697595 0x6257 0x62db 0x365f77ff 0x36601d53 0x36601cc1 0x366a1339 0x366a014f 0x366fad97 0x649b 0x36671565 0x366e9ce7 0x31fcc943 0x34b03a63 0x34b036c9 0x34b0229f 0x34a854dd 0x34a853a5 0x351f9fed 0x365ec743 0x2c75 0x2c34)
  terminate called throwing an exception(gdb) 
  </code></pre>