• error — ссылка на объект, в который будет записываться информация об ошибке, если методу не удастся выполнить стоящую перед ним задачу. Обычно целесообразно передавать этому методу объекты-ошибки, если есть такая возможность. Если какие-то ошибки и будут возникать, то такие объекты помогут вам более уверенно с ними справляться.
Теперь, когда мы значительно более полно контролируем перечисление элементов, построим перечень всех элементов из каталога. app и выведем даты создания, последнего изменения элемента и последнего обращения к нему. Кроме того, будем выводить информацию о том, является ли этот элемент скрытым, а также есть ли у нас право считывания конкретного файла. Наконец, мы также укажем, являются конкретные элементы каталогами или нет. Приступим:
— (NSArray *) contentsOfAppBundle{
NSFileManager *manager = [[NSFileManager alloc] init];
NSURL *bundleDir = [[NSBundle mainBundle] bundleURL];
NSArray *propertiesToGet = @[
NSURLIsDirectoryKey,
NSURLIsReadableKey,
NSURLCreationDateKey,
NSURLContentAccessDateKey,
NSURLContentModificationDateKey
];
NSError *error = nil;
NSArray *result = [manager contentsOfDirectoryAtURL: bundleDir
includingPropertiesForKeys: propertiesToGet
options:0
error:&error];
if (error!= nil){
NSLog(@"An error happened = %@", error);
}
return result;
}
— (NSString *) stringValueOfBoolProperty:(NSString *)paramProperty
ofURL:(NSURL *)paramURL{
NSNumber *boolValue = nil;
NSError *error = nil;
[paramURL getResourceValue:&boolValue
forKey: paramProperty
error:&error];
if (error!= nil){
NSLog(@"Failed to get property of URL. Error = %@", error);
}
return [boolValue isEqualToNumber:@YES]? @"Yes": @"No";
}
— (NSString *) isURLDirectory:(NSURL *)paramURL{
return [self stringValueOfBoolProperty: NSURLIsDirectoryKey ofURL: paramURL];
}
— (NSString *) isURLReadable:(NSURL *)paramURL{
return [self stringValueOfBoolProperty: NSURLIsReadableKey ofURL: paramURL];
}
— (NSDate *) dateOfType:(NSString *)paramType inURL:(NSURL *)paramURL{
NSDate *result = nil;
NSError *error = nil;
[paramURL getResourceValue:&result
forKey: paramType
error:&error];
if (error!= nil){
NSLog(@"Failed to get property of URL. Error = %@", error);
}
return result;
}
— (void) printURLPropertiesToConsole:(NSURL *)paramURL{
NSLog(@"Item name = %@", [paramURL lastPathComponent]);
NSLog(@"Is a Directory? %@", [self isURLDirectory: paramURL]);
NSLog(@"Is Readable? %@", [self isURLReadable: paramURL]);
NSLog(@"Creation Date = %@",
[self dateOfType: NSURLCreationDateKey inURL: paramURL]);
NSLog(@"Access Date = %@",
[self dateOfType: NSURLContentAccessDateKey inURL: paramURL]);
NSLog(@"Modification Date = %@",
[self dateOfType: NSURLContentModificationDateKey inURL: paramURL]);
NSLog(@"—");
}
— (BOOL) application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
NSArray *itemsInAppBundle = [self contentsOfAppBundle];
for (NSURL *item in itemsInAppBundle){