核心数据 - NSManagedObject Custom Class --NSInvalidArgumentExcep



我有一个自定义的NSManagedObject类,看起来像这样。

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@class Ingredient, MenuCategory, Price, ItemSize;
@interface Item : NSManagedObject
@property (nonatomic, retain) NSNumber * collected;
@property (nonatomic, retain) NSString * desc;
@property (nonatomic, retain) NSString * instructions;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * quantity;
@property (nonatomic, retain) NSNumber * selected;
@property (nonatomic, retain) MenuCategory *menuCategory;
@property (nonatomic, retain) NSSet *prices;
@property (nonatomic, retain) NSSet *itemSizes;
@property (nonatomic, retain) NSSet *itemIngredients;

-(NSMutableSet *)mutablePrices;
-(NSMutableSet *)mutableItemIngredients;
@end
#import "Item.h"
#import "Ingredient.h"
#import "MenuCategory.h"
#import "Price.h"
#import "ItemSize.h"

@implementation Item
@dynamic collected;
@dynamic desc;
@dynamic instructions;
@dynamic name;
@dynamic quantity;
@dynamic selected;
@dynamic itemIngredients;
@dynamic menuCategory;
@dynamic prices;
@dynamic itemSizes;

-(NSMutableSet *)mutablePrices{
    return [self mutableSetValueForKey:@"prices"];
}
-(NSMutableSet *)mutableItemIngredients{
    return [self mutableSetValueForKey:@"itemIngredients"];
}
@end

没有什么特别的,对???以下方法应该可以正常工作????

[item.mutablePrices addObject:newPrice]

但它没有给我以下错误

2014-03-30 10:25:34.594 restos[1192:60b] -[NSManagedObject mutablePrices]: unrecognized selector sent to instance 0xe8d72c0
2014-03-30 10:25:34.597 restos[1192:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSManagedObject mutablePrices]: unrecognized selector sent to instance 0xe8d72c0'

但是当我执行以下操作时

[[item mutableSetValueForKey:@"prices"] addObject:newPrice];

工作得很好---我知道由于某种原因我看不到它

----

提前谢谢你

错误消息

-[NSManagedObject mutablePrices]: unrecognized selector sent to instance 0xe8d72c0

指示item对象不是 Item 类的实例。一个可能的原因可能是您没有在核心数据中将实体的设置为"项目"模型检查器。

通常,如果让 Xcode 生成 NSManagedObject 子类文件(从"编辑"菜单),并将自定义方法添加到类类别中,则不太容易出错。或者,使用"移动生成器"。

最新更新