ウェブサイト検索

typescript - 文字列をNSDataに変換し、NSDataを再び文字列に変換する


私は次のコードを持っています:

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」は、"DetErHemmeligt"を含むTypeScriptの文字列です
  2. 2行目は「DetErHemmeligt」と出力します
  3. 行4は常に「<44657445 7248656d 6d656c69 6774>」を出力します
  4. 5行目も機能します
  5. 6行目がエラーのログなしでクラッシュし、私はここで "initWithBytesLengthEncoding" のような多くのことを試しましたが、それでもクラッシュし続け、なぜかわかりません。

何かアイデアはありますか?

回答 #1

あなたはここでNativeScriptを通してObjective-Cのコードを書いているように思われ、それは次のように変換されます:

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

これの問題は、あなたのオブジェクトがすでに初期化されていることです。Objective-C の new 呼び出しは、実際には alloc の後に init を呼ぶ省略形です。

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

オブジェクトを二度 init できないため、アプリがクラッシュします。代わりに alloc を使ってみてください。

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