2011-02-16 3 views
0

Привет,Objective C: Функция помощи

У меня есть следующие функции:

-(NSString*) nudgePhoneNumber:(NSString*)num{ 
    NSString *[email protected]""; 
    [nudged stringByReplacingOccurrencesOfString:@"+" withString:@""]; 
    [nudged stringByReplacingOccurrencesOfString:@"\\s" withString:@""]; 
    [nudged stringByReplacingOccurrencesOfString:@"-" withString:@""]; 
    [nudged stringByReplacingOccurrencesOfString:@"." withString:@""]; 
    [nudged stringByReplacingOccurrencesOfString:@"/" withString:@""]; 
    //NSLog(nudged); 
    return nudged; 
} 

И я звоню его следующим образом:

-(IBAction) phoneNumberUp:(id)sender{ 
    NSString *mob=phoneNumber.text; 
    NSString *[email protected]""; 
    [result nudgePhoneNumber:mob]; 
     ... 
} 

Но я получаю исключение: "- [NSCFException nudgePhoneNumber:]: непризнанный селектор, отправленный в экземпляр" и "Завершение приложения из-за неперехваченного исключения" NSInvalidArgumentException ""

Я совершенно новичок в Objective-C и думаю, что мне просто нужен чей-то быстрый взгляд.

Большое спасибо заранее,

ответ

1

если оба nudgePhoneNumber: и phoneNumberUp: определяются в том же классе, то phoneNumberUp: должен более того:

-(IBAction) phoneNumberUp:(id)sender{ 
    NSString *mob=phoneNumber.text; 
    NSString *result=nil; 
    result = [self nudgePhoneNumber:mob]; 
    ... 
} 

также, я считаю, что метод nudgePhoneNumber: на самом деле ничего не делает. Возможно, вам придется больше это сделать:

-(NSString*) nudgePhoneNumber:(NSString*)num{ 
    NSString *nudged = num; 
    nudged = [nudged stringByReplacingOccurrencesOfString:@"+" withString:@""]; 
    nudged = [nudged stringByReplacingOccurrencesOfString:@"\\s" withString:@""]; 
    nudged = [nudged stringByReplacingOccurrencesOfString:@"-" withString:@""]; 
    nudged = [nudged stringByReplacingOccurrencesOfString:@"." withString:@""]; 
    nudged = [nudged stringByReplacingOccurrencesOfString:@"/" withString:@""]; 
    //NSLog(nudged); 
    return nudged; 
} 
2

В каком классе ваш метод -(NSString*) nudgePhoneNumber:(NSString*)num был объявлен и реализован?

Вы создаете объект NSString в строке NSString *[email protected]"";, а затем пытаетесь вызвать метод, используя объект NSString. Поскольку у NSString нет метода с именем nudgePhoneNumber:, вы получаете нераспознанную ошибку выполнения селектора (это исключение возникает, когда сообщение отправляется объекту, который не отвечает на это сообщение (ключевая терминология там).

Я предлагаю вам еще раз взглянуть на то, как вы «методы вызова» (на самом деле вы «Отправка сообщения») в Objective-C.

+0

Метод находится в том же классе. Должен ли я использовать «я»? – Eamorr

+0

Существует также проблема использования 'stringByReplacingOccurencesOfString' с' NSString' вместо 'NSMutableString' – Abizern

+0

Если метод находится в том же классе, то вы используете ключевое слово« self »! :) –

Смежные вопросы