I'd like to save an NSMutableDictionary object in NSUserDefaults. The key type in NSMutableDictionary is NSString, the value type is NSArray, which contains a list of object which implements NSCoding. Per document, NSString and NSArray both are conform to NSCoding. I am getting this error: [NSUserDefaults setObject: forKey:]: Attempt to insert non-property value.... of class NSCFDictionary.