@implementation FirstScene
...
- (void)nextScene {
Meetings *meetings = (Meetings *) [NSEntityDescription insertNewObjectForEntityForName:@"Meetings" inManagedObjectContext:self.managedObjectContext];
NSManagedObjectID* objectID = [meetings objectID];
[secondScene setObjectID:objectID];
}
...
@end
@implementation SecondScene
....
- (void)viewDidLoad
{
[super viewDidLoad];
self.managedObjectContext = [(STAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}
+ (void)setObjectID:(NSManagedObjectID*)objectID {
NSManagedObjectContext *context = [self managedObjectContext]; // ERROR
Meetings *theSameMeetings = (Meetings *)[context objectWithID:objectID];
}
...
@end
我收到错误“在以下代码中选择器‘managedObjectContext’没有已知的类方法:
NSManagedObjectContext *context = [self managedObjectContext];
我这里的目的是将FirstScene中的*meetings(managedObjectContext)的objectID传递给SecondScene,这样我就可以继续给实体*meetings添加属性了。谢谢。
最佳答案
那不是 Core Data 错误,而是基本的 Objective-C 错误。你在这个方法中:
+ (void)setObjectID:(NSManagedObjectID*)objectID;
“+”表示这是一个类方法,而不是实例方法。所以 self
在这种情况下是 SecondScene
类,而不是该类的任何特定实例。当您尝试这样做时:
NSManagedObjectContext *context = [self managedObjectContext];
...您正在尝试调用名为 +managedObjectContext
的方法,即具有该名称的类方法。这显然不存在,这不足为奇。
我怀疑您打算让 setObjectID:
成为一个实例方法,这意味着它应该有一个 -
而不是 +
行首。
关于ios - 核心数据 : ObjectID Error: "No known class method for selector ' managedObjectContext',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14860289/