मेरे पास निम्न कोड है:

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. "डेटा" एक टाइपप्रति स्ट्रिंग है जिसमें "DetErHemmeligt" शामिल है
  2. लाइन 2 "DetErHemmeligt" प्रिंट करती है
  3. लाइन 4 हमेशा "<44657445 7248656d 6d656c69 6774>" प्रिंट करती है
  4. लाइन 5 भी काम करती है
  5. लाइन 6 बिना किसी त्रुटि लॉगिंग के दुर्घटनाग्रस्त हो जाती है, और मैंने यहां "initWithBytesLengthEncoding" जैसी कई चीजों की कोशिश की है, लेकिन यह सिर्फ मेरे लिए दुर्घटनाग्रस्त हो रहा है और मुझे पता नहीं चल रहा है कि क्यों।

कोई विचार?

2
Neigaard 10 सितंबर 2018, 23:29

1 उत्तर

सबसे बढ़िया उत्तर

मुझे ऐसा लगता है कि आप यहां नेटिवस्क्रिप्ट के माध्यम से ऑब्जेक्टिव-सी कोड लिख रहे हैं, जिसका अनुवाद होगा:

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

इसके साथ समस्या यह है कि आपकी वस्तु पहले ही शुरू हो चुकी है। ऑब्जेक्टिव-सी में new कॉल वास्तव में alloc के बाद init के लिए शॉर्टहैंड है।

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

चूंकि आप किसी ऑब्जेक्ट को दो बार init नहीं कर सकते, इसलिए आपका ऐप क्रैश हो जाता है। इसके बजाय, alloc का उपयोग करके देखें।

NSString.alloc().initWithDataEncoding(nsData, NSUTF8StringEncoding);
0
Ian MacDonald 10 सितंबर 2018, 23:40