类类别中的方法不作为实例方法

时间:2014-04-30 07:13:20

标签: ios objective-c-category

在我的项目中,我有两个NSManageObjects(生成核心数据)。对于这两个对象,我创建了一个名为containsToday的实例方法的类别。

问题是只有对象ListElement的方法有效。在调用对象NamedRange的方法时,我得到了(与类方法相同的方法):

  

- [NSManagedObject containsToday]:无法识别的选择器发送到实例...

以下是一些代码:

ListElement:

#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

NamedRange:

#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

ListElement(Additions):

#import "ListElement.h"

@interface ListElement (Additions)

- (BOOL) containsToday;

@end

NamedRange(Additions):

#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

1 个答案:

答案 0 :(得分:1)

您可能没有正确设置数据模型中的实体类。该消息表明它正在尝试在类NSManagedObject的对象上调用该方法,而不是派生类的实例。

在XCode中,打开数据模型,选择ListElement实体,然后打开右侧的数据模型检查器(在“实用工具”栏中)并检查实体类是否正确。如果我是正确的,我认为你会发现它目前仍然设置为NSManagedObject。