可能很简单,但我的搜索都没有让我得到我需要的东西。
我在我的应用中使用Core Data来管理游戏的玩家和比赛。我的核心数据堆栈是完全通用的,在我的AppDelegate中。我正在尝试创建一个帮助类,它将返回基于搜索字符串的实体(播放器)。当我尝试连接核心数据时,我在设置fetchRequest时遇到此错误。
没有已知的选择器'managedObjectContext'的类方法
这是代码...... PlayerSearch.h
#import <Foundation/Foundation.h>
#import "Player.h"
@interface PlayerSearch : NSObject
+ (Player *)searchForPlayerWithID:(NSString*)playerID;
@end
PlayerSearch.m
#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的上下文时出现错误。这正是我在整个应用程序中在视图控制器中设置上下文的方式,它在那里工作得很好......
我错过了什么?
答案 0 :(得分:3)
您的searchForPlayerWithID:
方法是一种类方法,您尝试在该类方法中调用managedObjectContext
上的实例方法(self
)。
您可以通过将managedObjectContext
方法更改为类方法来解决此问题:
+ (NSManagedObjectContext *)managedObjectContext
{
return [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}