Sunday February 20, 2011
Whenever I’m in need of some quick and dirty command line arguments for a simple tool, I find using NSUserDefaults to be the easiest:
$ ./mjau -input mjau.m
#import
int main (int argc, const char * argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *inputFile = [[NSUserDefaults standardUserDefaults]
objectForKey:@"input"];
NSStringEncoding usedEncoding;
NSError *error = nil;
NSString *content = [NSString stringWithContentsOfFile:inputFile
usedEncoding:&usedEncoding
error:&error];
if (error) {
fprintf(stderr, "Error: %s\n",
[[error localizedDescription] UTF8String]);
return -1;
}
fprintf(stdout, "%s\n", [content UTF8String]);
[pool drain];
return 0;
}
No need to bother with getopt(3)
if you just need some simple option parsing.
Of course, this also means you can use it to set existing NSUserDefaults from the command line. One such useful toggle is the -NSShowNonLocalizedStrings YES
default, turning non-localized strings into all caps making them easier to spot.