2011-08-07 23 views
6

मेरा ऐप हमारी वेब सेवा से JSON डेटा में खींच रहा है। सभी मामलों में अब तक, जानकारी को स्मृति में बनाए रखा जाएगा या केवल फ्लाई पर रीफ्रेश किया जाएगा, जिसमें एपीआई में उपयोग किए गए लॉगिन टोकन के अलावा स्थानीय रूप से कुछ भी बनाए रखने की आवश्यकता नहीं है। नई सुविधाओं में से एक के साथ हम जोड़ रहे हैं, हम लंबे, लैट, त्रिज्या और नाम के साथ स्थानों के समूह, 26 अधिकतम, ले जायेंगे।बाद में उपयोग के लिए आईओएस में ऑब्जेक्ट्स संग्रहीत करना

मुझे एक बड़ी वस्तु बनाने के लिए इस डेटा में 1-2 फ़ील्ड जोड़ने की भी आवश्यकता है। तो मेरा सवाल यह है कि आईओएस फाइल सिस्टम में इस प्रकार के डेटा को स्टोर करने का सबसे अच्छा तरीका क्या होगा? वर्तमान में मैं NSUserDefaults का उपयोग कर रहा हूं, लेकिन ऐसा लगता है कि बड़ी मात्रा में डेटा के लिए सीमित या बीमार सलाह दी जाती है। शायद नहीं।

इस डेटा को पुनर्प्राप्त, परिवर्तित या संपादित और सहेजने की आवश्यकता होगी। यह सब अभी भी उन 26 वस्तुओं में से किसी को खींचने की क्षमता बनाए रखने के दौरान। पढ़ने और मदद करने के लिए अग्रिम धन्यवाद।

उत्तर

5

इतनी छोटी मात्रा में डेटा (26 आइटम) के लिए मैं archiving का सुझाव देता हूं।

NSKeyedArchiver/NSKeyedUnarchiver का उपयोग करके प्लेस्ट में सहेजें। प्रतिनिधि के द्वारा किए गए डेटा से अपना डेटा पढ़ें फिनिशलांचिंगविथऑप्शन, और इसे बचाने के लिए UIApplicationWillResignActiveNotification के लिए सुनो।

NSUserDefaults उपयोगकर्ता प्राथमिकताओं को संग्रहीत करने के लिए डिज़ाइन की गई सुविधाओं वाला एक प्लिस्ट है। कोड की कुछ पंक्तियों को सहेजने के लिए इसे नियमित रूप से नियमित रूप से इस्तेमाल किया जाता है, जो मुझे लगता है कि यह एक बुरा विचार है क्योंकि आपको अपने कार्य से संबंधित अतिरिक्त जटिलता मिलती है।

यदि आप चाहते हैं कि लॉगिन डिवाइस को चोरी करने और फोरेंसिक प्रदर्शन करने के लिए कुंजीचेन का उपयोग करें। आप एक रैपर का उपयोग करना चाह सकते हैं और कुछ लेख पढ़ सकते हैं, अगर आप रुचि रखते हैं तो टिप्पणी करें।

यदि आप अधिक सुविधाओं की तलाश करते हैं तो Best way to store data on iphone देखें लेकिन अब ऐसा नहीं लगता है।

[[NSNotificationCenter defaultCenter] 
     addObserver:self 
      selector:@selector(saveMyData) 
       name:UIApplicationWillResignActiveNotification 
      object:nil]; 

ग्राफ/शब्दकोश की प्रत्येक वस्तु/जो कुछ भी आप को लागू संग्रह करने के लिए NSCoding चाहते पर::

कुछ कोड आपके प्रारंभ करने के ... एप्लिकेशन को बचाने के इस्तीफा देने के कॉल करने के लिए रजिस्टर

- (void)encodeWithCoder:(NSCoder*)coder { 
    [coder encodeObject:myIvar forKey:kmyIvar]; 
} 

- (id)initWithCoder:(NSCoder*)coder { 
    if((self = [super initWithCoder:coder])) { 
     self.myIvar = [[coder decodeObjectForKey:kmyIvar] retain]; 
    } 
    return self; 
} 
+0

मैं लॉगिन जानकारी जो मैं लागू करने पर योजना बना रहा था के भंडारण के लिए चाबी का गुच्छा का उपयोग कर के कुछ उदाहरण देखा है। जानकारी के लिए धन्यवाद। –

+0

कोर-डेटा के बाद 20-ईश आइटम्स के लिए बहुत बेहतर विचार की तरह ध्वनि सुनिश्चित करना। और यदि आपको उपयोगकर्ता नाम और पासवर्ड स्टोर करने की आवश्यकता है, तो ऐप्पल का नमूना स्रोत है जिसका मैंने वर्णन किया है कि यहां कैसे उपयोग करें: http://stackoverflow.com/questions/6972092/ios-how-to-store-username-password-wihtin-an -एप/6972305 # 6972305 –

3

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

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html

कुछ भी दूर से बड़े के लिए, मैं इस का प्रयोग करेंगे।

1

मेरे पास यह वही प्रश्न था और बस एक बेहतर समाधान पता लगाया।

आप क्या कर सकते हैं बस JSON स्ट्रिंग को अपने NSUserDefault के रूप में स्टोर करें। फिर, जब आप ऐप को फिर से लोड करते हैं तो उसी विधि (या फ्रेमवर्क उपयोगिता) का उपयोग करते हैं जिसका उपयोग आप पहली बार JSON स्ट्रिंग को अपनी ऑब्जेक्ट्स पर मैप करने के लिए करते थे। इस तरह आप अभी भी NSUserDefaults की आसानी का लाभ उठा सकते हैं।

यदि आप अपनी वेब सेवाओं को प्रबंधित करने के लिए रेस्टकिट का उपयोग कर रहे हैं तो यह और भी आसान हो जाता है। इस पोस्ट का उत्तर दिखाता है कि जेएसओएन से अपने ऑब्जेक्ट में मैप करने के लिए रेस्टकिट के JSON पार्सर का उपयोग कैसे करें।

Deserializing local NSString of JSON into objects via RestKit (no network download)

+0

बहुत अच्छा, मैं इस परियोजना का उपयोग अपनी परियोजना में करूँगा, धन्यवाद! :-) – kernix