目标C-不知道分类方法

时间:2018-10-08 08:37:15

标签: ios objective-c xcode10

我正在尝试实现一个数据库系统,其中实体在其DataClass.m中包含一些方法,但无法在ViewController.m中调用它们。

在上面的代码中,我尝试调用savePersona,但是内部版本为

  

没有已知的选择器类方法   'savePersona:etaLabel:indirizzoLabel:contextLabel:'

ViewController.m

#import "ViewController.h"
#import "Giovanni+CoreDataClass.h"
#import "AppDelegate.h"


@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}

/*
 * Event after clicking button Save.
 */
- (IBAction)btnSave:(id)sender {
    NSString *nome = _insertName.text;
    NSString *eta = _insertAge.text;
    NSString *indirizzo = _insertIndirizzo.text;

    // Check for all inputs
    if ([nome isEqualToString:@""] || [eta isEqualToString:@""] || [eta intValue] <= 0 || [indirizzo isEqualToString:@""] ) {
        _resultText.text = @"All fields are required";
        return;
    }


    [Giovanni savePersona:nome etaLabel:[eta intValue] indirizzoLabel:indirizzo contextLabel:[((AppDelegate *)[[UIApplication sharedApplication] delegate]) managedObjectContext]];
}

Giovanni + CoreDataClass.h

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@interface Giovanni : NSManagedObject

+(void)savePersona: (NSString*)nome etaLabel:(int16_t)eta indirizzoLabel:(NSString*)indirizzo contextLabel:(NSManagedObjectContext *)context;

@end

#import "Giovanni+CoreDataProperties.h"

Giovanni + CoreDataClass.m

#import "Giovanni+CoreDataClass.h"

@implementation Giovanni

+(void)savePersona: (NSString*)nome etaLabel:(int16_t)eta indirizzoLabel:(NSString*)indirizzo contextLabel:(NSManagedObjectContext *)context {
    Giovanni *p1 = [[Giovanni alloc] initWithContext:context];
    p1.nome = nome;
    p1.eta = eta;
    p1.indirizzo = indirizzo;
}

在构建阶段中,我有Giovanni + CoreDataClass.m和Giovanni + CoreDataProperties.m。 在副本捆绑资源中,我具有DatabaseExample.xcdatamodeld(DatabaseExample是项目的名称)

2 个答案:

答案 0 :(得分:0)

看起来您已将类文件命名为category,但您没有使用categories

尝试将Giovanni+CoreDataClass重命名为GiovanniCoreData之类。

答案 1 :(得分:0)

我通过重新创建项目解决了我的问题。

什么都没有改变,但是它表明XCode在我单击编辑器->创建NSManagedObject子类...时会在自动创建实体时遇到一些问题。

我不知道这是否是最新版本的错误,但是现在该项目可以正常工作。