... without needing to care which constructor to use this time to get it right.
Well, I was offended by this just long enough, so I sat down and wrote a macro that allows this:
// Use like this: id dict = [NSDictionary dictionary]; NSNumber *ten = NMMakeNumber(10.0f); [dict setObject:ten forKey:@"numberOfFingers"]; [dict setObject:NMMakeNumber(23) forKey:@"fnord"]; [dict setObject:NMMakeNumber(YES) forKey:@"wantFries"];
I'ts almost the way Autoboxing works in Java or C#.
This quite eases the pain of creating NSNumbers correctly for me, because it means I don't have to repeat the type of what I am working with quite as often.
Pretty DRY. :)
[source:/open-source/NSNumberCreator/trunk Here's the code to a NSNumber category and a makro that makes this happen.]