Since Mac OS X is a unix based system, you can always use “getcwd” from the standard C library, but in general if you want to stick within the context of Objective-C/Cocoa, see the examples below.
Here’s one snippet you will probably Google quickly, but ultimately not the solution I chose.
(original code from stackoverflow see reference below)
NSFileManager *filemgr; NSString *currentpath; filemgr = [[NSFileManager alloc] init]; currentpath = [filemgr currentDirectoryPath];
Using the “bundle path” rather than “executable path” turned out to work much better in my instance:
NSString *currentpath = [[[[NSBundle mainBundle] bundlePath] stringByDeletingPathExtension] stringByDeletingLastPathcomponent]; NSString *fileName = [NSString stringWithFormat:@"%@/%@/",currentpath,@"filename.pdf"];
friendlydeveloper.com, “NSFileManager”, http://www.friendlydeveloper.com/tag/nsfilemanager/
techtopia.com, “Working with Directories in Objective c”, http://www.techotopia.com/index.php/Working_with_Directories_in_Objective-C
Macrumors Forums, http://forums.macrumors.com/showthread.php?t=524754
stackoverflow, “Find Parent Directory of a path”, http://stackoverflow.com/questions/1309524/cocoa-objc-find-parent-directory-of-a-path
Unfortunately, this is not as straight forward as it seems it should be. This really comes down to roughly two approaches in my opinion:
NSString *robot= @"Ronnie"; NSString *robotname = [robot stringByAppendingString:@" is the name of a robot."];
NSString *robot= @"Ronnie"; NSString *robotname= @" is the name of the a robot."; NSString *robotknowledge = @" knows eight languages."; [NSString stringWithFormat:@"%@/%@/%@", robot, robotname, robot, robotknowledge];
cocoadevcentral.com, “Learn Objective-C”, http://cocoadevcentral.com/d/learn_objectivec/
After reading a similarly titled article on Forbes, I was inspired to write a counter-argument.
The author of the Forbes article implies that the stringent security of the iPad and this line of Apple products is limiting users freedom to use the product as they wish and will ultimately drive geeks away. On the contrast, it seems the tighter the system is locked, the more desire geeks have to understand and hack these products. A perfect example of this is the trend of iOS jailbreaking.
“The desire to hack things” was born out of an age old, genetically preserved and burning curiosity to understand and take apart things which were designed for the mainstream consumer.
By taking apart the first PCs, mainframes, early computer systems and legacy telephone and PBX systems – the first modern day computer-techno-geniuses were born.
Like Apple, these former technology corporation giants designed their products to be used within the confines and restraints of a system which was meant to preserve the integrity of their creations – much like the “icosystem” mentioned by McAffee (see reference below).
In legacy phone systems long distance phone calls cost more than short distance calls even though power usage and internal cost was approximately the same. On the iPad and iPhone we see the same type of inflated margins on certain products and services that could cost less.
All this means is the cycle has reset; in Steve Jobs generation “geeks” were black boxing ATT/Bellsouth and other major telephone carriers. Following in this legacy, it is now a task of the next generation to take apart and understand Apples’ creations.
The iphone, iPad and iPod aren’t prisons.. Maybe for general consumers.. But for the true geek they are a playground.. A mystery to unravel with potential and secrets waiting to be uncovered.
“Why Geeks Hate the iPad”, Forbes, Andrew McAfee. http://www.forbes.com/2010/07/07/apple-geeks-google-technology-cio-network-ipad.html?feed=rss_technology