Ols*_*lsi 18 iphone core-data objective-c nsmanagedobject ios
我昨天刚开始使用CoreData,我疯了:(我创建了一个使用CoreData的项目(勾选方框 - 使用CoreData).创建实体,然后为所有实体创建NSManagedObject类(我猜他们创建实体的'setter'和'getter'方法).
现在,我在AppDeletegate中#imported所有这些类,并在我的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");
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我收到此错误
[NSManagedObject setTitle:]:无法识别的选择器发送到实例0x6160550
我不知道为什么会这样.请帮忙!!!在此先感谢大家!
添加Subscriptions
Subscriptions.h 的标题
@interface订阅: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;
@结束
我什么都没改变.就像Xcode创建它一样.
b12*_*400 32
只是提醒一下,不要使用大写变量名,它可能会影响getter和setter不能正常工作.
如果你从数据模型生成NSManagedObject子类,一切都应该没问题,虽然它是@dynamic,setters是由coredata实现的,并且因为它们已经实现,所以你不应该将它改为合成.至少对我来说,在将@dynamic更改为@synthesize之后,coredata返回空对象.
不要忘记在数据模型中设置类名:

在我看来,标题属性可能未设置为字符串。你检查过吗?
通常,发送到实例的无法识别的选择器是由于向对象发送消息而该对象不知道如何处理而导致的运行时错误。
Subscriptions *sbs = (Subscriptions *)[NSEntityDescription insertNewObjectForEntityForName:@"Subscriptions" inManagedObjectContext:context];
sbs.Title = @"OK";
Run Code Online (Sandbox Code Playgroud)
希望有帮助