Делегат экспресс-отчета

Описание: класс, реализующий протокол делегата экспресс-отчета.

Файл «MAReportDelegateImpl.h»

#import <Foundation/Foundation.h>
#import "MAReportDelegate.h"
// Класс, реализующий протокол MAReportDelegate
@interface MAReportDelegateImpl : NSObject<MAReportDelegate>
// Первоначальные настройки отчета
@property (nonatomic, readonly) NSDictionary *reportSettings;
// Сохраненные настройки отчета
@property (nonatomic, retain) NSData *reportState;
// Данные скриншота
@property (nonatomic, assign) NSData *screenshot;
// Проверка наличия сохраненного скриншота отчета
@property (nonatomic, readonly) BOOL hasScreenshot;
// Права доступа к экспресс-отчёту
@property (nonatomic, readonly) MAReportAccessRights *accessRights;
// Сохраняет текущее состояние отчета
- (void) saveReport;
// Сохраняет отчет в избранное
- (void) saveFavoriteWithName: (NSString *)name;
@end

Файл «MAReportDelegateImpl.m»

#import "MAReportDelegateImpl.h"
#import "MADataViewController.h"
@implementation MAReportDelegateImpl
// Сохраняет текущее состояние отчета
- (void) saveReport
{
    // Выводим сообщение о вызове метода saveReport
    NSLog(@"Вызов действий по сохранению текущего состояния отчета");
}
// Сохраняет отчет в избранное
- (void) saveFavoriteWithName: (NSString *)name
{
    // Выводим сообщение о вызове метода saveFavoriteWithName
    NSLog(@"Вызов действий по сохранению отчета в избранное");
}
// Инициализирует экземпляр класса с помощью данных контроллеров представлений экспресс-отчета
-(id) initWithDataViewControllers: (NSArray *)controllers andMode: (int)mode
{
    if ((self = [super init]))
    {
        // Создаем справочник для хранения настроек отчета
        NSMutableDictionary *dict = [NSMutableDictionary dictionary];
        // Задаем в справочнике номер активного представления экспресс-отчета
        [dict setObject:[NSNumber numberWithInt: mode] forKey:@"mode"];
        // Создаем справочник для хранения признаков видимости заголовков представлений экспресс-отчета
        NSMutableDictionary *titleVisible = [NSMutableDictionary dictionary];
        // Перебираем в цикле представления экспресс-отчета
        for (MADataViewController *controller in controllers) {
            // Сохраняем в справочнике признак видимости заголовка для текущего представления экспресс-отчета
            [titleVisible setObject:[NSNumber numberWithBool:controller.isDataViewTitleVisible] forKey:[NSNumber numberWithInt:controller.tag]];
        }
        // Сохраняем справочник признаков видимости заголовков в справочнике настроек отчета
        [dict setObject:titleVisible forKey:@"titleVisible"];
        // Сохраняем сформированный справочник настроек в свойстве reportState
        _reportState = [NSKeyedArchiver archivedDataWithRootObject:dict];
        // Получаем путь к файлу
        NSString *path = [[NSBundle mainBundle] pathForResource:@"SplittedListReportCell-procedural" ofType:@"png"];
        // Получаем двоичные данные файла
        NSData *nsData = [NSData dataWithContentsOfFile: path];
        // Задаем двоичные данные скриншота
        _screenshot = nsData;
        // Устанавливаем первоначальное значения признака наличия скриншота
        _hasScreenshot = YES;
    }
    return self;
}
@end

См. также:

Создание делегата экспресс-отчета