Преобразование NSString в NSData и наоборот

У меня возникает проблема при попытке конвертировать NSString в NSData и наоборот. Я пытаюсь сохранить зашифрованную строку в моей базе данных. Для этого я использую алгоритм AES. Теперь, что я делаю, я получаю зашифрованный NSData, и я преобразовываю это в NSString, используя следующее:

// Not woking
NSString *strTemp = [[NSString alloc] initWithData:encData encoding:NSUTF8StringEncoding]; 

// Working
NSString *strTemp = [[NSString alloc] initWithData:encData encoding:NSASCIIStringEncoding];

Почему NSData не конвертируется при использовании NSUTF8StringEncoding. То же самое, когда я пытаюсь преобразовать строку, полученную с помощью NSASCIIStringEncoding, используя:

// Not working
[strTemp dataUsingEncoding:NSASCIIStringEncoding];

// Working
[strTemp dataUsingEncoding:NSUTF8StringEncoding];

Почему NSASCIIStringEncoding не работает при преобразовании NSString в NSData?

Ответ 1

NSString до NSData:

NSString* str= @"teststring";
NSData* data=[str dataUsingEncoding:NSUTF8StringEncoding];

NSData до NSString:

NSString* newStr = [[NSString alloc] initWithData:theData
                                         encoding:NSUTF8StringEncoding];

Ответ 2

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