2015-05-08 2 views
1

У меня есть метод классаObjective C-неизвестный метод класса для селектора

+ (NSString *)calcRemaingTimeToDate:(NSDate *)startDate:(NSDate *)endDate; 


- (void)calcRemaingTime 
{ 
    if (self.meeting.startTime) { 
     self.timeToMeetingOutput.text:self startDate = [AppContext calcRemaingTimeToDate:self.meeting.startTime]; 
     CGRect bound = [self.timeToMeetingOutput.text boundingRectWithSize:CGSizeMake(278.f, 16.f) 
                    options:NSStringDrawingUsesLineFragmentOrigin 
                   attributes:@{NSFontAttributeName: self.timeToMeetingOutput.font} 
                    context:nil]; 
     self.timeToMeetingWidth.constant = bound.size.width + 10.f; 
    } 

Но получаю сообщение об ошибке, как ни известного метода класса для селектора «calcRemaingTimeToDate». Я не получаю ошибку. Любой, пожалуйста, помогите мне.

+0

Включите фактическое сообщение об ошибке. –

+1

, потому что в вашем объявлении метода указано '+ (NSString *) calcRemaingTimeToDate: (NSDate *) startDate: (NSDate *) endDate; ', но вы вызываете' calcRemaingTimeToDate: 'вы пропустили часть' endDate: '. –

+0

@VivekMolkar, Почему бы не опубликовать это как asnwer. –

ответ

1

В вашем методе класса:

+ (NSString *)calcRemaingTimeToDate:(NSDate *)startDate:(NSDate *)endDate; 

Имеет два параметра, но в коде вы только передавая одно:

[AppContext calcRemaingTimeToDate:self.meeting.startTime]; 

По этой причине компилятор не распознает метод. Этот метод должен быть вызван как-то вроде этого:

[AppContext calcRemaingTimeToDate:self.meeting.startTime :secondParam]; 

Существует еще одна проблема в объявлении вашего метода, вы не указали имя метода части для второго параметра, ваше имя метода должно быть что-то вроде это:

+ (NSString *)calcRemaingTimeFromDate:(NSDate *)startDate toDate:(NSDate *)endDate; 

И это должно быть названо как:

[AppContext calcRemaingTimeFromDate:self.meeting.startTime toDate:secondParam]; 

Также в вашем коде, это self.timeToMeetingOutput.text:self startDate, кажется, неверно синтаксисом.

+0

Мой метод класса находится в файле AppContext.h и методе calcRemaingTime в файле ContentViewController.m, я изменил его в качестве self.timeToMeetingOutput.text = [AppContext calcRemaingTimeToDate: self.meeting.startTime toDate: (NSDate *) endDate]; ошибка использования необъявленного идентификатора «endDate». Я хочу использовать startDate и endDate. Как сделать это. Пожалуйста, предложите. – Rini

+0

@Rini, в вашем AppContext.h объявить '+ (NSString *) calcRemaingTimeFromDate: (NSDate *) startDate toDate: (NSDate *) endDate; 'и в файле AppContext.m реализовать метод' + (NSString *) calcRemaingTimeFromDate: (NSDate *) startDate toDate: (NSDate *) endDate {// ваша реализация} ', а затем вызвать этот метод из того, где вам нужно как' [AppContext calcRemaingTimeFromDate: self.meeting.startTime toDate: secondParam]; '. Также не забудьте «#import» AppContext.h'' в классе, в котором вы используете этот метод. – Shabib

1

Ваше объявление метода говорит

+ (NSString *)calcRemaingTimeToDate:(NSDate *)startDate:(NSDate *)endDate; 

но вы звоните calcRemaingTimeToDate: вы пропустили endDate: часть.

Передача второго параметра должна решить проблему.