title: NSUserDefaults won't save NSDictionary
body: <p>I'm writing an application which uses NSUserDefaults as the data storage mechanism, and am hitting a problem when trying to save data (that conforms to the Property List protocols):</p>
  
  <pre><code>+ (BOOL)storeAlbum:(Album *)album
  {
      NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
      NSMutableDictionary *albums = (NSMutableDictionary *)[prefs objectForKey:@"my_adventure_book_albums"];
      NSLog(@"Existing albums: %@",albums);
      if (!albums)
          albums = [NSMutableDictionary dictionaryWithObject:album forKey:@"album"];
      else
          [albums setObject:album forKey:@"album"];
      NSLog(@"%@",album);
      [prefs setObject:albums forKey:@"my_adventure_book_albums"];
      return [prefs synchronize];
  }
  </code></pre>
  
  <p>I get this output:</p>
  
  <pre><code>2010-06-29 17:17:09.929 MyAdventureBook[39892:207] Existing albums: (null)
  2010-06-29 17:17:09.930 MyAdventureBook[39892:207] test
  2010-06-29 17:17:09.931 MyAdventureBook[39892:207] *** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '{
      album = test;
  }' of class 'NSCFDictionary'.
  </code></pre>
  
  <p>The description method of Album looks like:</p>
  
  <pre><code>- (NSString *)description
  {
      // Convert to a NSDictionary for serializing
      if (!title) title = @"";
      if (!date) date = [NSDate dateWithTimeIntervalSinceNow:0];
      if (!coverImage) coverImage = @"";
      if (!images) images = [[NSArray alloc] initWithObjects:@"",nil];
  
      //NSDictionary *dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:title,date,coverImage,images,nil] forKeys:[NSArray arrayWithObjects:@"title",@"date",@"coverImage",@"images",nil]];
      //NSDictionary *dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:title,nil] forKeys:[NSArray arrayWithObjects:@"title",nil]];
      //return [dict description];
      return @"test";
  }
  </code></pre>
  
  <p>All of the commented-out lines have the same result, so I just decided to see if the NSString "test" would work, which it (of course) doesn't.</p>