2012-12-15 5 views
0

Я пытаюсь использовать метод userVisibleDateTimeStringForRFC3339DateTimeString, который Apple документирует here.Получение ошибки Undeeclared Identifier с импортированным методом

Так сначала я создал отдельный класс под названием jhsDateFormatter и первым модифицировал его от

- (NSString *)userVisibleDateTimeStringForRFC3339DateTimeString:(NSString *)rfc3339DateTimeString; 

к - (NSMutableString *) userVisibleDateTimeStringForRFC3339DateTimeString: (NSMutableString *) rfc3339DateTimeString: (NSString *) rfc3339DateTimeFormatString;

поэтому я мог бы передать второй параметр, который был бы искомой строкой формата даты.

я затем импортировать этот новый класс в мой взгляд controller.m:

#import "jhsDateFormatter.h" 

и называется метод таким образом:

predicateMutableString = [userVisibleDateTimeStringForRFC3339DateTimeString:dateHolderMutableString :@"yyyy'-'MM'-'dd'"]; 

predicateMutableString определяется в viewController.h и синтезированное в .м.

Я получил сообщение об ошибке сборки: использование незаявленных идентификатора «userVisibleDateTimeSTringForRFC3339DateTimeString

Так я комментировал из моей модифицированной версии и использовать исходный код и метод подписи в моем файле класса:

- (NSString *)userVisibleDateTimeStringForRFC3339DateTimeString:(NSString *)rfc3339DateTimeString; 

и назвал его таким образом: enter image description here

Я не уверен, почему вызов метода не принимается. Я думаю, что сопоставил типы данных.

Пожалуйста, дайте мне знать ваши идеи о том, что не так.

Благодаря

ответ

0

Вы, вероятно, хотите объявить метод как это:

+ (NSMutableString *)userVisibleDateTimeStringForRFC3339DateTimeString:(NSMutableString *)rfc3339DateTimeString formatString:(NSString *)rfc3339DateTimeFormatString; 

(Обратите внимание на + в начале, и тот факт, что второй аргумент теперь с именем - это пробел в вашей код, который действителен, но странно)

Тогда вы назвали бы это так:.

predicateMutableString = [jhsDateFormatter userVisibleDateTimeStringForRFC3339DateTimeString:dateHolderMutableString formatString:@"yyyy'-'MM'-'dd'"]; 

Где jhsDateFormatter новый класс, который вы создали.

В вашем примере кода вы не вызываете метод на каком-либо объекте, поэтому компилятор жалуется.

+0

Спасибо, Джесси, ваш ответ имеет смысл. Я думаю, вы говорите, что это метод класса, поэтому сначала он должен быть объявлен как + в файле класса, а затем обратиться к классу в вызове метода. – Jazzmine