2010-08-24 2 views
0

Я пытаюсь сделать простое шифрование строки и получаю сообщение об ошибке. Мой код:Вопрос CommonCrypto/CommonDigest iPhone

#import <CommonCrypto/CommonDigest.h> 

#define CC_MD5_DIGEST_LENGTH 16 

- (NSString *)md5:(NSString *)str { 
     const char *cStr = [str UTF8String]; 
     unsigned char result[CC_MD5_DIGEST_LENGTH]; 
     CC_MD5(cStr, strlen(cStr), result); 
     return [NSString stringWithFormat: @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",      
       result[0], result[1], result[2], result[3], 
       result[4], result[5], result[6], result[7], 
       result[8], result[9], result[10], result[11], 
       result[12], result[13], result[14], result[15]];   
    } 


    NSString *test = md5(@"testing"); 

К сожалению, я получаю сообщение об ошибке сказав «md5 необъявленная» для начала этой функции. Должен ли он быть определен в библиотеке, которую я импортировал выше?

ответ

0

Try:

NSString *test = [self md5:@"testing"]; 

Edit:

Чтобы проверить это, либо переместить ваш вызов ниже реализации на ваш взгляд контроллера файл .m или положить

-(NSString *)md5:(NSString *)str; 

в вашем просмотреть файл .h.

+0

Я получаю сообщение о том, что контроллер вида может не отвечать на -md5. Я также попытался сделать это, перейдя в «NSString * test = nil», а затем [test md5: @ «testing»], но затем он говорит, что md5 может не отвечать на NSString, что не имеет для меня никакого смысла. Не вызывает ли функция для строки? – startuprob

+0

[test md5: @ "testing"] не работает, поскольку компилятор правильно сообщает вам, что на объекте NSString (который является тестом) нет метода md5 :. Метод md5: существует в любом классе, в котором вы используете метод md5:. – Eric