Clean solution for Challenge 2

Here is the cleanest solution I’ve been able to come up with. I’ve tried to make my code as readable as possible. Any suggestion about how to make it even cleaner would be welcome. Otherwise, I hope it is useful for all fellow students:

#import <Foundation/Foundation.h>

NSString * stringFromFile(NSString *filePath)
{
    NSString *hugeString =
                [NSString stringWithContentsOfFile:filePath
                                          encoding:NSUTF8StringEncoding
                                             error:NULL];
    return hugeString;
}

NSArray * arrayOfNames()
{
    NSString *namesString = stringFromFile(@"/usr/share/dict/propernames");
    NSArray *names = [namesString componentsSeparatedByString:@"\n"];
    return names;
}

NSArray * arrayOfWords()
{
    NSString *wordsString = stringFromFile(@"/usr/share/dict/words");
    NSArray *words = [wordsString componentsSeparatedByString:@"\n"];
    return words;
}

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        NSArray *names = arrayOfNames();
        NSArray *words = arrayOfWords();
        
        for (NSString *name in names) {
            NSString * lowercaseName = [name lowercaseString];
            if (![name isEqualToString:@""] && [words containsObject:lowercaseName]) {
                NSLog(@"%@", name);
            }
        }
    }
    return 0;
}