Преобразование строки в NSData и NSData обратно в строку - PullRequest
0 голосов
/ 10 сентября 2018

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

const content: NSString = NSString.stringWithString(data);
console.log("content#1: " + content);
const nsData: NSData = content.dataUsingEncoding(NSUTF8StringEncoding);
console.log("nsData#1: " + nsData);
console.log("nsData#2: " + nsData.base64EncodedStringWithOptions(null));
NSString.new().initWithDataEncoding(nsData, NSUTF8StringEncoding)
  1. "data" - строка Typescript, содержащая "DetErHemmeligt"
  2. В строке 2 выводится «DetErHemmeligt»
  3. Строка 4 всегда печатает "<44657445 7248656d 6d656c69 6774>"
  4. Строка 5 также работает
  5. Строка 6 вылетает без регистрации ошибок, и я пробовал здесь много вещей, таких как «initWithBytesLengthEncoding», но он просто продолжает сбой для меня, и я не могу понять, почему.

Есть идеи?

1 Ответ

0 голосов
/ 10 сентября 2018

Мне кажется, что вы пишете здесь код Objective-C через NativeScript, который будет выглядеть так:

[[NSString new] initWithData:nsData encoding:NSUTF8StringEncoding];

Проблема в том, что ваш объект уже инициализирован.Вызов new в target-c на самом деле является сокращением для alloc, за которым следует init.

[[[NSString alloc] init] initWithData:nsData encoding:NSUTF8StringEncoding];

Поскольку вы не можете init объект дважды, ваше приложение падает.Вместо этого попробуйте использовать alloc.

NSString.alloc().initWithDataEncoding(nsData, NSUTF8StringEncoding);
...