On Aug 11, 2009, at 9:14 AM, DeNigris Sean wrote:
NSUserDefaults *args = [NSUserDefaults standardUserDefaults];
                
int x = [args integerForKey:@"x"];
int y = [args integerForKey:@"y"];
If the command line is "MyApp -x -100 -y 100", NSUserDefaults does not recognize the -100 as the value of the x argument - it sets x to 0. If the '-' is removed, everything is fine. Is this a bug? Is there a way around?

I consider that if a negative number is a valid value for an option, and NSUserDefaults can not handle them, and this restriction is not documented, then it's a bug.

But this has nothing to do with NSUserDefaults and everything to do with command line arguments.

When parsing the command line arguments, how does the application know that "-x means that the next argument must be parsed as a number"?

In short, it can't unless you use something somewhere to effectively express the schema of your command line arguments. Since there is no schema associated with NSUserDefaults, the problem can't be solved there.


Non-bug options would be:
a) handle negative arguments correctly
b) restrict numerical arguments to positive values and document this restriction

The behavior of the object does not match the spec.

It does. The spec simply does not encompass providing the schema necessary to parse the command line arguments.

See 'man getopt' then go google 'getopt better command line parsing'.

b.bum
_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to