我昨天才开始使用 CoreData,我快要疯了:( 我创建了一个使用 CoreData 的项目(勾选了方框 - 使用 CoreData)。创建了实体,然后为所有实体创建了 NSManagedObject 类(我假设他们为实体创建了“setter”和“getter”方法)。
现在,我在我的 AppDeletegate 中 #import 所有这些类,并在我的 applicationDidFinishLaunching 方法中写下:
(订阅是应用程序中的实体之一)
NSManagedObjectContext *context = [self managedObjectContext];
Subscriptions *sbs = (Subscriptions *)[NSEntityDescription insertNewObjectForEntityForName:@"Subscriptions" inManagedObjectContext:context];
[sbs setTitle:@"OK"];
[sbs setType:@"Tag"];
[sbs setCode:@"cars"];
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Couldn't create the subscription");
}
当我运行它时,我得到了这个错误
[NSManagedObject setTitle:]: unrecognized selector sent to instance 0x6160550
我不知道为什么会这样。请帮忙!!! 提前感谢大家!
添加订阅标题
订阅.h
@interface Subscriptions : NSManagedObject {
}
@property (nonatomic, retain) NSString * Type;
@property (nonatomic, retain) NSDecimalNumber * Read;
@property (nonatomic, retain) NSString * Title;
@property (nonatomic, retain) NSString * Code;
@property (nonatomic, retain) NSDecimalNumber * New;
@end
我没有改变任何东西。就像 Xcode 创建它一样。
最佳答案
提醒一下,不要使用大写的变量名,它可能会影响 getters 和 setters 不能正常工作。
如果你从数据模型生成你的 NSManagedObject 子类,一切都应该顺利,虽然它是@dynamic,setters 是由 coredata 实现的,并且因为它们已经实现,你不应该改变它来合成。 至少对我来说,在我将@dynamic 更改为@synthesize 后,coredata 返回空对象。
不要忘记在数据模型中设置类名:
关于iphone - 核心数据问题 : -[NSManagedObject setValue:]: unrecognized selector sent to instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4546451/