2010-12-29 23 views
10

मुझे एक और नौसिखिया सवाल मिला है।एनएसएसटींग सीस्ट्रिंग को बहिष्कृत किया गया है। विकल्प क्या है?

मैंने कोड का एक टुकड़ा लिखा है जो एक वेब सेवा परिणाम अनुकरण करने के लिए एनएसएसटींग को एनएसएमयूटेबलडेटा में परिवर्तित करता है।

यह पता चला है कि सीस्ट्रिंग को बहिष्कृत किया गया है। क्या आप इसे बदलने में मेरी मदद कर सकते हैं? यहां मेरा कोड है।

NSString *testXMLDataString = 
@"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
    etc.... 
"</SOAP-ENV:Envelope>"; 

//Replace webData Received from the web service with the test Data 
NSMutableData *testXMLData = [NSMutableData dataWithBytes:[testXMLDataString cString] length:[testXMLDataString length]]; 
[webData setData:testXMLData]; 
+1

यह रूप में अच्छी तरह है कि जब आप प्रतिवाद चेतावनी देखते हैं, अक्सर पदावनत विधि के लिए दस्तावेजों के लिए जा रहा आपको बता देंगे क्या विकल्प देखते हैं ध्यान दिया जाना चाहिए। उदाहरण के लिए, cStringUsingEncoding: या UTF8String का उपयोग करके cString के लिए दस्तावेज़ अनुशंसा करते हैं। http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/DeprecationAppendix/AppendixADeprecatedAPI.html%23//apple_ref/doc/uid/20000154-cString –

उत्तर

13
  1. स्ट्रिंग से कच्चे बाइट्स प्राप्त करें।
  2. यूटीएफ 8 एन्कोडिंग में उन बाइट्स की लंबाई प्राप्त करें।
  3. +dataWithBytes:length: विधि का उपयोग कर NSData ऑब्जेक्ट बनाएं।

const char *rawBytes = [testXMLDataString UTF8String]; 
const NSUInteger length = [testXMLDataString lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; 
NSAssert(length > 0, @"Couldn't convert to UTF-8"); 

NSMutableData *testXMLData = [NSMutableData dataWithBytes:rawBytes length:length]; 
[webData setData:testXMLData]; 
+0

यह पूरी तरह से काम करता है। मैंने बस यूटीएफ 8 स्ट्रिंग के साथ सीस्ट्रिंग को प्रतिस्थापित किया था। धन्यवाद! – manospro

+1

@manospro कृपया ध्यान दें कि '[स्ट्रिंग लंबाई] 'यूटीएफ -8 प्रतिनिधित्व की लंबाई नहीं है। यह केवल तभी काम करता है जबकि 'स्ट्रिंग' वास्तव में ASCII है। '[स्ट्रिंग लम्बाईऑफबाइट्सयूसिंग एन्कोडिंग: एनएसयूटीएफ 8 स्टिंगएन्कोडिंग] 'या' [[स्ट्रिंग डेटा यूजिंग एन्कोडिंग: एनएसयूटीएफ 8 स्ट्रिंगएन्कोडिंग] mutableCopy]' का उपयोग करें। – user3125367