2011-12-14 3 views
0

Я использую этот код, чтобы получить md5 Струнные окрошкаПреобразование NSDecimalNumber в NSString

- (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; 
} 

Когда я это сделать его работу совершенной

[self md5:@"mystring"]; 

Но когда я сделать это

[self md5:userId]; 

я имеют погрешность

Согласующий приложение из-за неперехваченного исключением 'NSInvalidArgumentException', причина: '- [NSDecimalNumber UTF8String]: непризнанная селектор послан к экземпляру 0x61a7080'

идентификатор пользователя является NSString

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

но это contaile facebook идентификатор пользователя, что-то вроде "3309843" я попытался

[self md5:[userId stringValue]]]; 

и я до сих пор имеют ту же ошибку

UPDATE я попробовал этот

[self md5:@"980232376"]; 

и до сих пор имеют ту же ошибку, я думаю, что проблема является метод md5. Я не могу получить md5 строки чисел?

ответ

7

Похоже, что на самом деле это не строка, которая у вас есть, если вы разбираете json, чтобы получить ее, это, скорее всего, NSNumber, а не NSString. Все синтаксические анализаторы JSON, которые я пытался до сих пор, преобразовывают числа в NSNumber. Я думаю, что быстрый тест, чтобы увидеть можно было бы просто изменить свойство NSNumber, а затем:

[self md5:[NSString stringWithFormat:@"%@", userId]]; 
+0

до сих пор не работают, я обновил свой пост – user567

+0

i'am жаль, там был NSLog (@ «хэш% @» , [self md5: uiserId]; я не видел, он работает отлично, спасибо – user567

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