NSArray को NSData में कैसे बदलें?


82

किसी को भी मुझे बता सकते हैं कि कैसे एक कन्वर्ट करने के लिए NSArrayएक करने के लिए NSData? मैंने ए NSArray। मुझे इसे भेजने की जरूरत है NSInputStream। आदेश में है कि मैं बदलने की आवश्यकता करने के लिए NSArrayएक करने के लिए NSData

कृपया मेरी मदद करो, मैं यहाँ फँस गया हूँ।

जवाबों:


190

NSKeyedArchiver का उपयोग करें (जो पोस्ट गेरेट लिंक का अंतिम वाक्य है):

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];

ध्यान दें कि सभी वस्तुओं arrayको NSCodingप्रोटोकॉल के अनुरूप होना चाहिए । यदि ये कस्टम ऑब्जेक्ट हैं, तो इसका मतलब है कि आपको एन्कोडिंग और डिकोडिंग ऑब्जेक्ट पर पढ़ना होगा ।

ध्यान दें कि यह एक काफी हार्ड-टू-रीड प्रॉपर्टी सूची प्रारूप तैयार करेगा, लेकिन वस्तुओं की एक विस्तृत श्रृंखला को संभाल सकता है। यदि आपके पास बहुत ही सरल सरणी (उदाहरण के लिए तार) है, तो आप NSPropertyListSerialization का उपयोग करना चाह सकते हैं, जो थोड़ी सरल संपत्ति सूची बनाता है:

NSString *error;
NSData *data = [NSPropertyListSerialization dataFromPropertyList:array format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error];

यदि आप तार पर पठनीय होना चाहते हैं, तो एक XML प्रारूप स्थिर भी हो सकता है।


93

कुछ संबंधित नोट पर, यहां बताया गया है कि आप NSData को NSArray में कैसे परिवर्तित करेंगे:

NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data]

5
सुनिश्चित करें कि यह NSKeyedUnarchiver है और NSKeyedArchiver नहीं है। ऑटो पूर्ण का उपयोग करते समय बनाने के लिए एक आसान गलती हो सकती है।
सीन

2
यह उत्तर, ऊपर से चुने गए उत्तर के साथ युग्मित होना चाहिए / NSData से /
Scott D

3

मुझे यकीन नहीं है कि यह आपकी मदद करेगा, लेकिन यह NSData के लिए एक NSMutableArray के लिए एक कड़ी है ।


त्वरित उत्तर के लिए धन्यवाद, मैंने जाँच की है कि इससे पहले कि बहुत मदद नहीं की।
सतीश

3

मैंने इस कोड का इस्तेमाल किया।

 NSError *error;
 NSMutableData *jsonData = [[NSJSONSerialization dataWithJSONObject:yourDemoArray
                                                                   options:0 // Pass 0 if you don't care about the readability of the generated string
                                                                     error:&error] copy];

1

तुम यह केर सकते हो-

NSArray *array= [NSArray array];
NSData *dataArray = [NSKeyedArchiver archivedDataWithRootObject:array];

1

IOS 9+ में कृपया इसका उपयोग करें:

NSArray *array = [[NSArray alloc] init];
NSData *data = [NSPropertyListSerialization dataWithPropertyList:array format:NSPropertyListBinaryFormat_v1_0 options:0 error:nil];

इसके पुराने संस्करण को iOS 8 में चित्रित किया गया था।


1

स्विफ्ट:

let data = NSKeyedArchiver.archivedData(withRootObject: jsonArray)
print(data)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.