【问题标题】:iOS Core Data managedObjectContext: No know class method for selectoriOS Core Data managedObjectContext:不知道选择器的类方法
【发布时间】: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 的上下文时出现错误。这正是我在整个应用程序的视图控制器中设置上下文的方式,它在那里工作正常......

我错过了什么?

【问题讨论】:

    标签: ios core-data nsmanagedobjectcontext


    【解决方案1】:

    您的searchForPlayerWithID: 方法是一个类方法,您正试图从该类方法中调用self 上的实例方法(managedObjectContext)。

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

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

    【讨论】:

    • 他还需要修改调用站点以不调用 self 而是调用类名(或者可能是 [self class])
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 2014-09-16
    相关资源
    最近更新 更多