iOS Core Data managedObjectContext:不知道选择器的类方法
Posted
技术标签:
【中文标题】iOS Core Data managedObjectContext:不知道选择器的类方法【英文标题】:iOS Core Data managedObjectContext: No know class method for selector 【发布时间】:2014-08-17 01:59:44 【问题描述】:可能是一些简单的事情,但我的搜索都没有找到我需要的东西。
我在我的应用程序中使用 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】:您的searchForPlayerWithID:
方法是一个类方法,您正试图从该类方法中调用self
上的实例方法(managedObjectContext
)。
您可以通过将 managedObjectContext
方法更改为类方法来解决此问题:
+ (NSManagedObjectContext *)managedObjectContext
return [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
【讨论】:
他还需要修改调用站点以不调用 self 而是调用类名(或者可能是 [self class])以上是关于iOS Core Data managedObjectContext:不知道选择器的类方法的主要内容,如果未能解决你的问题,请参考以下文章