ios - 核心数据 : ObjectID Error: "No known class method for selector ' managedObjectContext'

标签 ios core-data reference objectid

@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/

相关文章:

ios - PaintCode 中的 UIButton (Swift)

ios - 方向问题

iphone - 执行获取请求 :error: A fetch request must have an entity

ios - 当我使用 CoreData 时,出现错误 : [NSAsynchronousFetchResult count]: unrecognized selector sent to instance

python - Python中的二维列表重复随机数赋值

oop - 值参数和引用参数的区别?

ios - UITableView 中的单元格只有在 iOS 中选择后才会更新(快速)

ios - 使用Apple LLVM 4.1构建iOS应用时出错

ios - RestKit:为外键关系创建 stub

r - 将数据框转换为 data.table,无需复制