2012-10-16 12 views
5

यहां कोड है जिसे मैंने एनएसडीटा को एनएसएसटींग में बदलने की कोशिश की लेकिन कार्यक्रम वापसी "कार्यक्रम प्राप्त संकेत: SIGABRT"।उद्देश्य-सी एनएसडीटा को एनएसएसटींग में कनवर्ट करें

NSString *string= [NSString stringWithUTF8String:[data bytes]]; 

या

NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

वहाँ यह करने के लिए किसी भी अन्य बेहतर तरीका है?

+0

अपने 'डेटा' चर नहीं के बराबर है? –

+4

और यदि यह शून्य नहीं है, तो क्या इसमें वास्तव में यूटीएफ -8 एन्कोडिंग में एक स्ट्रिंग के बाइट होते हैं? NSData ऑब्जेक्ट कैसे बनाया गया था? – rmaddy

+1

@rmaddy हालांकि इसके परिणामस्वरूप एक अपरिभाषित स्ट्रिंग परिणाम (लगभग निश्चित रूप से केवल एक शून्य वापसी) होगा, इसके परिणामस्वरूप उस रेखा पर एक SIGABRT नहीं होगा। –

उत्तर

7

Here's a highly up-voted answer जो दिखाता है कि यह कैसे करें। संक्षेप में:

NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

पहला विचार लगता है कि एक क्योंकि [data bytes] भेजने का असफल। स्ट्रिंग WithUTF8String एक शून्य * के लिए तैयार नहीं है। दूसरा विचार ऐसा लगता है कि इसे काम करना चाहिए, यहां तक ​​कि शून्य इनपुट के साथ भी।

0

स्विफ्ट-3

enter image description here

देना स्ट्रिंग = data.base64EncodedString()

+0

"ओह, स्विफ्ट ..." टिप्पणी करने के लिए आपकी दौड़ में, आप ओपी के वास्तविक प्रश्न को पढ़ना चाहेंगे – eric

संबंधित मुद्दे