2017-01-12 2 views
5

मैं आईपैड एप्लिकेशन विकसित कर रहा हूं जिसमें मुझे एकाधिक NSURLRequest बनाने की आवश्यकता है। यह कब विफल रहता है मुझे फिर से उस यूआरएल अनुरोध को आग लगाना होगा।क्या हम NSURLRequest को सीधे कोर डेटा में स्टोर कर सकते हैं?

मेरे पास अनुरोध के तीन प्रकार हैं (स्कूल बनाएं, फ़्लोर बनाएं और कमरे बनाएं) जिसमें एकाधिक पैरामीटर अलग-अलग अनुरोध हैं।

वहां रीट्रियल विधि है जो इंटरनेट पर उपलब्ध होने पर उसी ऑब्जेक्ट के साथ उपलब्ध हो सकती है जो पहले अनुरोध पर बनाई गई थी।

तो मैं तीन टेबल्स बनाने की कोशिश कर रहा था और मैं अपनी स्थिति के साथ सभी पैरामीटर को स्टोर करने की कोशिश कर रहा था।

क्या अनुरोध बनाने के बावजूद NSRLRequest के साथ सिंगल टेबल बनाना संभव है?

+3

आप कोर डेटा में सीधे 'NSURLRequest' स्टोर नहीं कर सकते हैं। आप केवल 'NSManagedObject' उदाहरणों को स्टोर कर सकते हैं। आप एक ऐसी इकाई बना सकते हैं जो आपको अनुरोध को फिर से बनाने के लिए आवश्यक जानकारी संग्रहीत करने की अनुमति दे। – Paulw11

+1

'NSURLRequest'' एनएस (सुरक्षित) कोडिंग 'अनुपालन है, इसलिए इसका अनुवाद' एनएसडीटा 'में किया जाना चाहिए। यह एक संभावना है। – Larme

+0

@ लार्मे आप कह रहे हैं कि हमें NSURL अनुरोध को NSData प्रकार में परिवर्तित करने की आवश्यकता है। सही बात? अगर यह डीबी में एनएसडीएटा के रूप में सहेजा गया है तो हम कैसे जानते हैं कि सर्वर पर कौन सा अनुरोध भेजा जाता है। क्या हमें एनएसडीटा को डीकोड करने और सर्वर पर भेजने की आवश्यकता है? –

उत्तर

1

कोर डेटा इकाइयां NSManagedObject या NSManagedObject के उप-वर्ग के उदाहरणों से मेल खाते हैं, इसलिए आप सीधे यूआरएल अनुरोधों को सहेज नहीं सकते हैं। आप क्या कर सकते हैं SavedRequest जैसे कुछ नामक एक इकाई बनाएं जिसमें यूआरएल अनुरोध का प्रतिनिधित्व करने वाली संपत्ति है - और शायद अनुरोध के बारे में कुछ अन्य विवरण (जो भी अन्य जानकारी आपको चाहिए - तिथि, शायद?)।

के बाद से NSURLRequestNSCoding के अनुरूप है, तो आप इस संपत्ति कोर डाटा "बदला जाने वाला" प्रकार का उपयोग कर बना सकेगी। कोर डेटा NSCoding का उपयोग NSData से स्वचालित रूप से/से कनवर्ट करने के लिए करेगा। आप संपत्ति के लिए NSURLRequest असाइन करेंगे और उन्हें वापस पढ़ेंगे, और कोर डेटा उन्हें NSData के रूप में सहेज देगा।

हालांकि आपका विवरण दिया गया है, कोर डेटा समझ में नहीं आता है। ऐसा लगता है कि आप बस यूआरएल अनुरोधों की एक सूची को सहेजना चाहते हैं और बाद में इसे वापस पढ़ना चाहते हैं, और अतिरिक्त डेटा कोर डेटा प्रदान करने की आवश्यकता नहीं है। अपने NSURLRequest ऑब्जेक्ट को सरणी में रखना आसान होगा और उसके बाद उस सरणी को फ़ाइल में या उपयोगकर्ता डिफ़ॉल्ट पर सहेजें। आप NSData से अपने/में कनवर्ट करेंगे, लेकिन चूंकि आप NSCoding का उपयोग कर सकते हैं जो आसान है। वापस

NSArray *savedRequests = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath]; 
का उपयोग कर

BOOL success = [NSKeyedArchiver archiveRootObject:myArray toFile:filePath]; 

आप सरणी मिल चाहते हैं:

सरणी आप कुछ इस तरह करते हैं चाहते हैं बचाने के लिए, एक सरणी संभालने myArray युक्त यूआरएल अनुरोध और filePath में एक मार्ग कहा जाता है

0

आप शायद NSURLRequest की URL संपत्ति के absoluteString को बचा सकते हैं। या क्या उनमें से प्रत्येक के पास अलग-अलग टाइमआउट या कैश नीतियां होती हैं?

0

हां यह संभव है, कम से कम स्विफ्ट के साथ। स्विफ्ट के साथ आप CoreData में ट्रांसफॉर्मेबल प्रॉपर्टी तक पहुंच सकते हैं। इस संपत्ति का उपयोग करना कोर डेटा में किसी भी प्रकार का डेटा रखना संभव है। वह अतिरिक्त ओवरहेड के बिना भी।

उत्कृष्ट ट्यूटोरियल http://geekyviney.blogspot.nl/2015/02/transformable-binary-data-properties-in.html

+0

स्विफ्ट में "परिवर्तनीय" संपत्ति की कोई अवधारणा नहीं है। कोर डेटा में एक है। –

+0

यह सही है, उत्तर को दोहराया। – Vincent

2

तो मैं अपने खुद के विचार मैं सभी के साथ साझा कर रहा हूँ के साथ आया देखें।

जैसा कि मैंने पढ़ा और googling के अनुसार, मैं NSURLRequest कोर डेटा में स्टोर नहीं कर सकता। क्योंकि मुझे वस्तु का प्रकार नहीं पता है।

मैं स्तंभ पैरामीटर, विधि, यूआरएल

तो मैं टेबल जो पैरामीटर (Dict) के भी शामिल होगा बना सकते हैं, के तरीके (पुट, प्राप्त आदि), यूआरएल के साथ कोर डेटा तालिका का निर्माण करेगा।

मैं क्या करूँगा कि मैं डीआईसीटी पैरा को NSKeyedArchiver में परिवर्तित कर सकता हूं और इसे पैराम कॉलम में सहेज सकता हूं। अलग कॉलम में यूआरएल और तरीके।

जब भी मुझे अनुरोध सहेजने की आवश्यकता होती है, तो मैं इसे तालिका से पकड़ सकता हूं और सर्वर पर भेज सकता हूं।

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