title: NSUserDefaults setObject:forKey: attempt to insert non-property list object
body: <p>I think I'm doing something really obviously wrong here, but I can't figure it out! I'm attempting to save an NSMutableDictionary containing NSStrings and NSNumbers and NSBooleans into NSUserDefaults on iOS 7.1.</p>
  
  <p>Here's the dictionary definition:</p>
  
  <pre><code>- (NSMutableDictionary *)hotLevelsDict
  {
      if ( (!_hotLevelsDict) || ([_hotLevelsDict count] &lt; 1) )
      {
          _hotLevelsDict = [NSMutableDictionary dictionaryWithDictionary:
                            @{@100: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @50, @"complete": @NO}],
                              @200: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @100, @"complete": @NO}],
                              @500: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @200, @"complete": @NO}],
                              @1000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @200, @"complete": @NO}],
                              @2000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @500, @"complete": @NO}],
                              @5000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @1000, @"complete": @NO}],
                              @10000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @1000, @"complete": @NO}],
                              @20000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @10, @"points": @1000, @"complete": @NO}],
                              @50000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @1000, @"complete": @NO}],
                              @100000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @1000, @"complete": @NO}],
                              @200000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @1000, @"complete": @NO}],
                              @300000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @1000, @"complete": @NO}],
                              @400000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @1000, @"complete": @NO}],
                              @500000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @1000, @"complete": @NO}],
                              @600000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @1000, @"complete": @NO}],
                              @700000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @1000, @"complete": @NO}],
                              @800000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @20, @"points": @1000, @"complete": @NO}],
                              @900000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @5, @"points": @50000, @"complete": @NO}],
                              @950000: [NSMutableDictionary dictionaryWithDictionary:@{@"time": @2, @"points": @50000, @"complete": @NO}]
                              }];
      }
  
      return _hotLevelsDict;
  }
  </code></pre>
  
  <p>And saving it:</p>
  
  <pre><code>[defaults setObject:self.hotLevelsDict forKey:@"hotLevelsDict"];
  </code></pre>
  
  <p>I've tried printing the classes of all the sub objects within the dictionary, and they're all standard, also I'm doing the same thing to another dictionary constructed in a very similar way and it works fine.</p>
  
  <p>Please could someone point out my error?</p>
  
  <p>Thanks!</p>