custom [super init] (создание подклассов)

Даны следующие занятия:

MCAchievementCenter: MCModel (подкласс)

-(id) initWithDelgate:(id<MCAchievementNotifications>)delegate {

    self = [super initWithRessource:@"achievements"];
    if (self)
    {
        self.delegate = delegate;
    }

    return self;
}

MCModel (суперкласс)

-(instancetype)initWithRessource:(NSString *)ressource {

    NSString* ressourcePath = [[NSBundle mainBundle] pathForResource:ressource
                                                              ofType:@"json"];
    NSData* raw = [NSData dataWithContentsOfFile:ressourcePath];
    return [super initWithJSONData:raw];
}

Примечание: -initWithJSONData:raw метод категории на NSObject который заполняет объект данными JSON. (см. https://github.com/uacaps/NSObject-ObjectMap)

Моя проблема: инициализация MCAchievementCenter терпит неудачу, как это становится nil,

Я делаю что-то неправильно? Любая помощь приветствуется.

Обновление: приложение входит в цикл>

введите описание изображения здесь

введите описание изображения здесь

1 ответ

Проверьте две вещи

  1. [NSData dataWithContentsOfFile:ressourcePath] в MCModel равно нулю или нет.

  2. [super initWithJSONData: raw] в созданной вами категории возвращает ноль или нет.

Может случиться, что ресурс недоступен по этому пути, а затем, когда вы вызываете super initWithJSONData, он тоже возвращает nil, поскольку необработанные данные равны nil.

Другие вопросы по тегам