Blog Archives

Get Current Directory in Objective-C

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];

Solution

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"];

References
stackoverflow.com, http://stackoverflow.com/questions/3692489/getting-current-directory-in-objective-c
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

Show Dialog Message Box in Objective-C Cocoa

There are a few ways to achieve this in Objective-C/Cocoa, and I found NSAlert to be the simplest base class for this purpose.

See example below of a small Utility class with this functionality.

Util.h

#import <Cocoa/Cocoa.h>

@interface Util: NSObject {
}

+(void)MessageBox:(char*) header:(char*) message: (unsigned long) message_type;

+(void)MessageBox:(NSString *) header:(NSString *) message;

@end

Util.m


#import "Util.h"

@implementation Util

+(void)MessageBox:(NSString *) header:(NSString *) message
{
CFOptionFlags result;

CFUserNotificationDisplayAlert(
0, //timeout
kCFUserNotificationNoteAlertLevel, //icon
NULL, //icon url
NULL,
NULL,
header,
message,
NULL, //button options default to just "ok"
CFSTR("Cancel"),
NULL,
&result //response
);

if (result==kCFUserNotificationDefaultResponse)
return NSAlertDefaultReturn;
else
return NSAlertErrorReturn;
}

+(void)MessageBox:(char*) header:(char*) message: (unsigned long) message_type
{
CFStringRef header_ref = CFStringCreateWithCString(NULL,header,strlen(header));
CFStringRef message_ref = CFStringCreateWithCString(NULL,message,strlen(message));

CFOptionFlags result;

CFUserNotificationDisplayAlert(
0,
kCFUserNotificationNoteAlertLevel,
NULL,
NULL,
NULL,
header_ref,
message_ref,
NULL,
CFSTR("Cancel"),
NULL,
&result
);

CFRelease(header_ref);
CFRelease(message_ref);

if (result==kCFUserNotificationDefaultResponse)
return NSAlertDefaultReturn;
else
return NSAlertErrorReturn;
}
@end

References
iphonedevsdk.com, http://www.iphonedevsdk.com/forum/iphone-sdk-development/8478-simple-message-box-popup.html
blogspot.com, Jorge Arimany, http://jorgearimany.blogspot.com/2010/05/messagebox-from-windows-to-mac.html
Google Codesearch (“kCFUserNotification”),

Follow

Get every new post delivered to your Inbox.