What's the best way to check if a Nib or Xib file exists before trying to load it using initWithNibName:bundle:
or similar?
#define AssertFileExists(path) NSAssert([[NSFileManager defaultManager] fileExistsAtPath:path], @"Cannot find the file: %@", path)
#define AssertNibExists(file_name_string) AssertFileExists([[NSBundle mainBundle] pathForResource:file_name_string ofType:@"nib"])
Here are a set of macros that you can call before you try an load a .xib
or .nib
, they will help identify missing files and spit out useful message about what exactly is missing.
Objective-C:
if([[NSBundle mainBundle] pathForResource:fileName ofType:@"nib"] != nil)
{
//file found
...
}
Please note, the documentation states that ofType:
should be the extension of the file. However even if you are using .xib you need to pass `@"nib" or you will get a false-negative.
Swift:
guard Bundle.main.path(forResource: "FileName", ofType: "nib") != nil else {
...
}
(See: touti's original answer: https://stackoverflow.com/a/55919888/89035)