Метод в категории класса работает не как метод экземпляра

В моем проекте у меня есть два NSManageObjects (генерируются основные данные). Для обоих объектов я создал категорию с методом экземпляра под названием containsToday.

Проблема в том, что работает только метод для объекта ListElement. При вызове метода для объекта NamedRange я получаю (тот же метод, что и метод класса):

-[NSManagedObject containsToday]: нераспознанный селектор отправлен экземпляру...

Вот код:

Элемент списка:

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class ListImage, TLList;

@interface ListElement : NSManagedObject

@property (nonatomic, retain) NSString * agn;
@property (nonatomic, retain) NSString * aid;
@property (nonatomic, retain) NSString * date;
@property (nonatomic, retain) NSString * iid;
@property (nonatomic, retain) NSNumber * indx;
@property (nonatomic, retain) NSNumber * mark;
@property (nonatomic, retain) NSString * oid;
@property (nonatomic, retain) NSString * tcd;
@property (nonatomic, retain) NSString * ted;
@property (nonatomic, retain) NSNumber * cxl;
@property (nonatomic, retain) NSString * oti;
@property (nonatomic, retain) ListImage *listImage;
@property (nonatomic, retain) TLList *tlList;

@end

Именованный диапазон:

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>


@interface NamedRange : NSManagedObject

@property (nonatomic, retain) NSString * tid;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * sta;
@property (nonatomic, retain) NSString * end;

@end

СписокЭлемент (Дополнения):

#import "ListElement.h"

@interface ListElement (Additions)

- (BOOL) containsToday;

@end

NamedRange (дополнения):

#import "NamedRange.h"

@interface NamedRange (Additions)

#warning TODO - why does this not work as instance method (for ListElement it works)?
+ (BOOL) containsToday:(NamedRange*)nr;
- (BOOL) containsToday;
@end

person AlexVogel    schedule 30.04.2014    source источник
comment
+ методы являются методами класса. Чтобы использовать их, вам нужно будет сделать [NamedRange containsToday:object]   -  person Rich    schedule 30.04.2014


Ответы (1)


Вероятно, вы неправильно установили Entity Class в модели данных. Сообщение указывает, что он пытается вызвать метод для объекта класса NSManagedObject, а не для экземпляра вашего производного класса.

В XCode откройте свою модель данных, выберите сущность ListElement, затем откройте Инспектор модели данных с правой стороны (на панели «Утилиты») и проверьте правильность класса сущности. Если я прав, думаю, вы обнаружите, что в настоящее время он по-прежнему установлен на NSManagedObject.

person smee    schedule 30.04.2014
comment
Спасибо, это была проблема. Не задан класс для NamedRange. - person AlexVogel; 30.04.2014