Use Xcode comment syntax, introduce objective-c modern syntax and some other code rearrange

This commit is contained in:
Anakin Zheng
2014-05-19 16:22:44 -04:00
parent b47bbf0177
commit 1eae87aede

View File

@ -31,120 +31,93 @@ NSString * const DirectoryLocationDomain = @"DirectoryLocationDomain";
@implementation NSFileManager (DirectoryLocations) @implementation NSFileManager (DirectoryLocations)
//
// findOrCreateDirectory:inDomain:appendPathComponent:error: /*! Method to tie together the steps of:
// 1) Locate a standard directory by search path and domain mask
// Method to tie together the steps of: 2) Select the first path in the results
// 1) Locate a standard directory by search path and domain mask 3) Append a subdirectory to that path
// 2) Select the first path in the results 4) Create the directory and intermediate directories if needed
// 3) Append a subdirectory to that path 5) Handle errors by emitting a proper NSError object
// 4) Create the directory and intermediate directories if needed
// 5) Handle errors by emitting a proper NSError object * \pararm searchPathDirectory - the search path passed to NSSearchPathForDirectoriesInDomains
// * \pararm domainMask - the domain mask passed to NSSearchPathForDirectoriesInDomains
// Parameters: * \pararm appendComponent - the subdirectory appended
// searchPathDirectory - the search path passed to NSSearchPathForDirectoriesInDomains * \pararm errorOut - any error from file operations
// domainMask - the domain mask passed to NSSearchPathForDirectoriesInDomains
// appendComponent - the subdirectory appended * \returns returns the path to the directory (if path found and exists), nil otherwise
// errorOut - any error from file operations */
//
// returns the path to the directory (if path found and exists), nil otherwise
//
- (NSString *)findOrCreateDirectory:(NSSearchPathDirectory)searchPathDirectory - (NSString *)findOrCreateDirectory:(NSSearchPathDirectory)searchPathDirectory
inDomain:(NSSearchPathDomainMask)domainMask inDomain:(NSSearchPathDomainMask)domainMask
appendPathComponent:(NSString *)appendComponent appendPathComponent:(NSString *)appendComponent
error:(NSError **)errorOut error:(NSError **)errorOut
{ {
// Declare an NSError first, so we don't need to check errorOut again and again
NSError *error;
if (errorOut) {
error = *errorOut;
}
else {
error = nil;
}
// //
// Search for the path // Search for the path
// //
NSArray* paths = NSSearchPathForDirectoriesInDomains( NSArray* paths = NSSearchPathForDirectoriesInDomains(searchPathDirectory,domainMask,YES);
searchPathDirectory,
domainMask,
YES);
if ([paths count] == 0) if ([paths count] == 0)
{ {
if (errorOut) NSDictionary *userInfo = @{NSLocalizedDescriptionKey: NSLocalizedStringFromTable(@"No path found for directory in domain.",@"Errors",nil),
{ @"NSSearchPathDirectory":@(searchPathDirectory),
NSDictionary *userInfo = @"NSSearchPathDomainMask":@(domainMask)};
[NSDictionary dictionaryWithObjectsAndKeys:
NSLocalizedStringFromTable( error = [NSError errorWithDomain:DirectoryLocationDomain
@"No path found for directory in domain.", code:DirectoryLocationErrorNoPathFound
@"Errors", userInfo:userInfo];
nil),
NSLocalizedDescriptionKey,
[NSNumber numberWithInteger:searchPathDirectory],
@"NSSearchPathDirectory",
[NSNumber numberWithInteger:domainMask],
@"NSSearchPathDomainMask",
nil];
*errorOut =
[NSError
errorWithDomain:DirectoryLocationDomain
code:DirectoryLocationErrorNoPathFound
userInfo:userInfo];
}
return nil; return nil;
} }
// //
// Normally only need the first path returned // Normally only need the first path returned
// //
NSString *resolvedPath = [paths objectAtIndex:0]; NSString *resolvedPath = paths[0];
// //
// Append the extra path component // Append the extra path component
// //
if (appendComponent) if (appendComponent)
{ {
resolvedPath = [resolvedPath resolvedPath = [resolvedPath stringByAppendingPathComponent:appendComponent];
stringByAppendingPathComponent:appendComponent];
} }
// //
// Create the path if it doesn't exist // Create the path if it doesn't exist
// //
NSError *error = nil;
BOOL success = [self
createDirectoryAtPath:resolvedPath
withIntermediateDirectories:YES
attributes:nil
error:&error];
if (!success)
{
if (errorOut)
{
*errorOut = error;
}
return nil;
}
//
// If we've made it this far, we have a success if ([self createDirectoryAtPath:resolvedPath withIntermediateDirectories:YES
// attributes:nil error:&error])
if (errorOut) return resolvedPath;
{ else
*errorOut = nil; return nil;
}
return resolvedPath;
} }
//
// applicationSupportDirectory /*! applicationSupportDirectory
//
// Returns the path to the applicationSupportDirectory (creating it if it doesn't * \returns The path to the applicationSupportDirectory (creating it if it doesn't exist).
// exist). */
//
- (NSString *)applicationSupportDirectory - (NSString *)applicationSupportDirectory
{ {
NSString *executableName = NSString *executableName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleExecutable"];
[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleExecutable"];
NSError *error; NSError *error = nil;
NSString *result =
[self NSString *result = [self findOrCreateDirectory:NSApplicationSupportDirectory
findOrCreateDirectory:NSApplicationSupportDirectory inDomain:NSUserDomainMask
inDomain:NSUserDomainMask appendPathComponent:executableName
appendPathComponent:executableName error:&error];
error:&error];
if (!result) if (!result)
{ {
NSLog(@"Unable to find or create application support directory:\n%@", error); NSLog(@"Unable to find or create application support directory:\n%@", error);