iOS核心数据managedObjectContext:没有知道选择器的类方法

时间:2014-08-17 01:59:44

标签: ios core-data nsmanagedobjectcontext

可能很简单,但我的搜索都没有让我得到我需要的东西。

我在我的应用中使用Core Data来管理游戏的玩家和比赛。我的核心数据堆栈是完全通用的,在我的AppDelegate中。我正在尝试创建一个帮助类,它将返回基于搜索字符串的实体(播放器)。当我尝试连接核心数据时,我在设置fetchRequest时遇到此错误。

没有已知的选择器'managedObjectContext'的类方法

这是代码...... PlayerSearch.h

#import <Foundation/Foundation.h>
#import "Player.h"

@interface PlayerSearch : NSObject

+ (Player *)searchForPlayerWithID:(NSString*)playerID;

@end

PlayerSearch.m

导入“PlayerSearch.h”

#import "AppDelegate.h"

@interface PlayerSearch()
@property(nonatomic, strong) NSManagedObjectContext *managedObjectContext;

@end

@implementation PlayerSearch

-(NSManagedObjectContext*)managedObjectContext{
return [(AppDelegate*)[[UIApplication sharedApplication]delegate]managedObjectContext];
}

+ (Player *)searchForPlayerWithID:(NSString*)playerID
{

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
fetchRequest.entity = [NSEntityDescription entityForName:@"Player" inManagedObjectContext:[self managedObjectContext]];

...

return player;
}
@end

设置fetchRequest.entity的上下文时出现错误。这正是我在整个应用程序中在视图控制器中设置上下文的方式,它在那里工作得很好......

我错过了什么?

1 个答案:

答案 0 :(得分:3)

您的searchForPlayerWithID:方法是一种类方法,您尝试在该类方法中调用managedObjectContext上的实例方法(self)。

您可以通过将managedObjectContext方法更改为类方法来解决此问题:

+ (NSManagedObjectContext *)managedObjectContext
{
    return [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}