Ошибка «неявного объявления функции» в Objective-C - PullRequest
7 голосов
/ 14 декабря 2011

Я хочу преобразовать короткую строку в хэш md5, я нашел несколько постов об этом, но никто не работал.это самый простой пример, который я нашел.у меня есть эта ошибка

неявное объявление функции CC_MD5 недопустимо в C99

- (NSString *) md5:(NSString *) input
{
 const char *cStr = [input UTF8String];
 unsigned char digest[16];
 CC_MD5( cStr, strlen(cStr), digest ); // This is the md5 call

 NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];

 for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
 [output appendFormat:@"%02x", digest[i]];

 return  output;
 }

ОБНОВЛЕНИЕ я добавил # import, он работает нормально, когдая называю метод следующим образом:

[self md5:@"admin"];

, я получаю правильный хэш md5.Но когда я делаю это

 [self md5:userId];

я получаю сообщение об ошибке,

[NSDecimalNumber UTF8String]: нераспознанный селектор отправляется на экземпляр 0x4d3e280 Но userId не является десятичным, он содержит идентификатор facebook,но он объявлен как NSString

NSString *userId;
@property(retain,nonatomic) NSString *userId;

Ответы [ 3 ]

26 голосов
/ 14 декабря 2011

Поскольку объявление CC_MD5 не было замечено.

Включите в свой проект инфраструктуру безопасности и

#import <CommonCrypto/CommonDigest.h>
3 голосов
/ 14 декабря 2011

Вам нужно включить файл заголовка CommonDigest из библиотеки Crypto в верхней части вашего класса, где определена функция MD5, а также включить инфраструктуру безопасности

#import <CommonCrypto/CommonDigest.h>
0 голосов
/ 14 декабря 2011

Вы импортируете правильный интерфейс, который определяет CC_MD5?

#import "CommonDigest.h"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...