Что я делаю не так с вызовом моего метода? - PullRequest
0 голосов
/ 22 ноября 2011

Я не понимаю.я новичок в цели c, и я просто не понимаю, что я делаю здесь неправильно.Я получаю следующую ошибку при построении моего кода: "Метод класса" + ValidateUserInfo: strPwd: ' не найден ".Я уверен, что для некоторых из вас что-то простое, и я просто вижу свою ошибку.Как правильно назвать мой метод ValidateUserInfo?

@implementation LoginViewController

-(IBAction)CheckInfo:(id)sender
{
   NSString *strUserName = [[txtUsername text] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    NSString *strPass = [[txtPass text] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

   [LoginViewController ValidateUserInfo:strUserName myPass:strPass];
}

+(void)ValidateUserInfo:(NSString *)name myPass:(NSString*)strPwd
{
    NSLog(@"VALIDATE user: %@",name);
    NSLog(@"VALIDATE pwd: %@",strPwd);
}

@end

Ответы [ 7 ]

4 голосов
/ 22 ноября 2011

Это выглядит хорошо, это предупреждение компилятора?если это так, то это будет связано с тем, что вы не объявляете метод в своем файле заголовка (.h) ...

Добавьте следующее перед @end в заголовке ...

+(void)ValidateUserInfo:(NSString *)name myPass:(NSString*)strPwd;
1 голос
/ 22 ноября 2011

Эта ошибка не соответствует вашему примеру кода. Вы уверены, что это код, который дает вам ошибку? Можете ли вы показать объявление метода из файла .h?

Ваша ошибка говорит о методе

ValidateUserInfo:strPwd 

не найден, но ваш код вызывает и реализует метод с именем

ValidateUserInfo:myPass. 

Обратите внимание, что имена методов должны начинаться со строчной буквы.

0 голосов
/ 22 ноября 2011

В вашем .h убедитесь, что вы объявили метод. пример:

@ interface LoginViewController: UIViewController {

}

+ (void) ValidateUserInfo: (NSString ) name myPass: (NSString ) strPwd;

@ конец

Также, как примечание, имена ваших методов должны начинаться со строчной буквы.

0 голосов
/ 22 ноября 2011

Добавить к +(void)ValidateUserInfo:(NSString *)name myPass:(NSString*)strPwd; к @interface LoginViewController (лучшее решение).

Или просто поместите реализацию +(void)ValidateUserInfo:(NSString *)name myPass:(NSString*)strPwd перед -(IBAction)CheckInfo:(id)sender.

0 голосов
/ 22 ноября 2011

+ (знак плюс) обозначает метод класса, а не

- (знак минус), который обозначает метод объектов

-(void) или +(void) 2 очень разные вещи.Из небольшого фрагмента кода, который вы дали, я не думаю, что ValidateUserInfo должен быть методом "класса"

, поэтому .......

+(void)ValidateUserInfo:(NSString *)name myPass:(NSString*)strPwd
{
    NSLog(@"VALIDATE user: %@",name);
    NSLog(@"VALIDATE pwd: %@",strPwd);
}

должно быть

-(void)ValidateUserInfo:(NSString *)name myPass:(NSString*)strPwd
{
    NSLog(@"VALIDATE user: %@",name);
    NSLog(@"VALIDATE pwd: %@",strPwd);
}
0 голосов
/ 22 ноября 2011

Вы звоните ValidateUserInfo:strPwd:, но согласно вашему коду он должен быть ValidateUserInfo:myPass!

0 голосов
/ 22 ноября 2011

Изменение:

[LoginViewController ValidateUserInfo:strUserName myPass:strPass];

на:

 [self ValidateUserInfo:strUserName myPass:strPass];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...