दिलचस्प पोस्ट
जावास्क्रिप्ट में कहा जाता है इस अभ्यास क्या है? विंडोज फोन 7 पर बैक बटन को कैसे नियंत्रित किया जाए कोणीय जेएस: कोणीय ऐप में डिस्प्ले ब्लॉब (.पीडीएफ) मैं वीबी.नेट में कैसे काम करूं? WAIT और ब्लॉक किए गए थ्रेड के बीच का अंतर SASS और ब्रेकपॉइंट का उपयोग करते हुए मीडिया प्रश्नों को मर्ज करना (उत्तर-के) PHP से जावास्क्रिप्ट के लिए JSON लौट रहा है? 64-बिट। नेट अनुप्रयोग में मेमोरी सीमाएं? ऐसी फाइल लोड नहीं कर सकता – रेलवे पर रूबी पर sqlite3 / sqlite3_native (लोड इरर) एक बड़ा HTML- स्ट्रिंग से एक jQuery ऑब्जेक्ट बनाना eval-after-load बनाम मोड हुक JQuery का उपयोग कर छवि स्रोत बदलना एमवीसी मॉडल की आवश्यकता सच है मैं ग्रहण में एक देशी पुस्तकालय (.so फ़ाइल) कैसे आयात करूँ? PyCharm वैध कोड के लिए अनसुलझे संदर्भ त्रुटि दिखाता है

क्या NSUserDefaults में मूल्यों को संचय में कोई सीमा है?

मैं iPhone विकास और objective C लिए नया हूँ मैंने अपने ऐप में कुछ मानों को स्टोर करने के लिए NSUserDefaults का उपयोग किया है लेकिन मुझे नहीं पता है कि यदि NSUserDefaults में मूल्यों को संचय करने की कोई सीमा है क्या कोई मुझे यह जानने में मदद करता है

अग्रिम में धन्यवाद।

Solutions Collecting From Web of "क्या NSUserDefaults में मूल्यों को संचय में कोई सीमा है?"

जब तक कि आईफोन / आईपैड पर पर्याप्त जगह है, तब तक आप एनएसयूएसएर डीफॉल्ट मानों को स्टोर कर सकते हैं। ये सभी मान एक। Plist फ़ाइल में संग्रहीत हैं, और यह फ़ाइल बहुत छोटी है, अधिकांश समय 1 केबी (जब तक कि आप बहुत सारे डेटा संग्रहीत नहीं करते हैं)।

आप किस प्रकार के स्टोर कर सकते हैं, इसकी सीमाएं हैं: उन्हें संपत्ति सूची ऑब्जेक्ट्स, अर्थात् NSString , NSNumber , NSData , NSArray , और NSDictionary । इसके अलावा, आप केवल NSArray और NSDictionary स्टोर कर सकते हैं यदि मूल्य संपत्ति सूची ऑब्जेक्ट हैं; भी, NSDictionary सभी चाबियाँ स्ट्रिंग होना चाहिए।

ध्यान दें कि UIColor जैसी कोई वस्तु ऊपर की सूची में नहीं है। इसलिए यदि आप डिफ़ॉल्ट डेटाबेस में कोई रंग संग्रहीत करना चाहते हैं, तो आपको इसे पहले स्ट्रिंग या डेटा ऑब्जेक्ट में कनवर्ट करना होगा, फिर जब आप डिफ़ॉल्ट पढ़ते हैं तो उसे वापस कन्वर्ट करना होगा।

जहां तक ​​आकार की सीमाएं हैं, वहां कोई भी दस्तावेज नहीं है, लेकिन ध्यान दें कि सभी डेटा को संपत्ति सूची फ़ाइल के रूप में संग्रहित किया जाएगा। पूरी फाइल पूरी तरह से पढ़ी जाती है और पूरी तरह से लिखी जाती है, इसलिए यदि आप NSUserDefaults का इस्तेमाल करते हैं, जो बड़ी मात्रा में डेटा संग्रहीत करता है जो केवल भागों में बदलता है, तो आप अनावश्यक I / O करने में बहुत समय बर्बाद कर रहे होंगे।

सभी ने सीधा सवाल का जवाब दिया "क्या कोई सीमा है?" हालांकि, मुझे यह धागा सचमुच समझ में आया कि "UserDefaults में कितना स्टोर करना बहुत अधिक है?"

यदि आप उस उत्तर की तलाश में हैं, तो यह एक उपयोगी धागा है । मुझे जो प्रतिक्रियाएं मिलीं, वह आपकी प्रोजेक्ट फाइल में जाने और प्लास्ट फ़ाइल आकार को देखने के लिए उपयोगी थीं:

5 ऑब्जेक्ट्स लगभग कुछ भी नहीं है ठीक हो जायेंगे!


मेरी मशीन पर मेरे पास मेरे उपयोगकर्ता डिफॉल्ट के बारे में 28 मेगाहर्ट्ज डेटा है यह किसी भी समस्या को पैदा नहीं कर रहा है।


सरणियों के साथ सामान्य प्रोग्रामिंग अनुभव से, मैं अनुमान लगाता हूं कि जब आप तत्व के आकार पर निर्भर करते हैं, तो 1000 के स्तर पर होने पर प्रदर्शन तेजी से क्षय हो जाता है। इसलिए एक कार्यक्रम में मुझे कुछ सौ तत्वों को संग्रहीत करने की कोई समस्या नहीं होगी। यह कहा गया है कि मैं शायद एक sqlite3 डेटाबेस या coredata का उपयोग शुरू कर देंगे, बाद में अगर मैं तुम थे के बजाय जल्दी।

याद रखने के लिए महत्वपूर्ण:

उपर्युक्त मेरी चिंताओं को कम करते हुए कि मेरी बढ़ती हुई संख्या चूक (अब लगभग 20-25) समस्याओं का कारण बन सकती है मैं कोरडाटा का उपयोग पहले से कर रहा हूं, इसलिए मैं विचार कर रहा था कि मेरी स्वीकार्य उपयोगकर्ता वरीयताएँ / अनुकूलन की संख्या के बाद से लंबे समय तक बढ़ रहा है तो, मैं उपयोगकर्ता चूक के साथ रहने जा रहा हूँ

हालांकि , जैसा कि अन्य उत्तरों ने बताया है, फ़ाइल को एक पूरे के रूप में पढ़ा और लिखा जाएगा। तो 20 कुंजी / स्ट्रिंग शब्दकोश और 5 कुंजी / बूलीयन शब्दकोशों को पढ़ने के लिए बस एक स्ट्रिंग प्राप्त करने के लिए … बिल्कुल आदर्श नहीं है। फिर भी, अगर यह प्रदर्शन को नुकसान नहीं पहुंचाता है और यह आपको एक टन का कोड बचाता है, तो क्यों नहीं?

NSUserDefaults में मूल्यों को संग्रहीत करने के लिए कोई सीमा नहीं है ..

NSUserDefaults में केवल संग्रहण सीमाएं डिवाइस संग्रहण क्षमता है

जितना भी एक iOS डिवाइस में उपलब्ध भंडारण अंतरिक्ष है, आप व्यावहारिक रूप से NSUserDefaults में डेटा स्टोर कर सकते हैं। कुंजीवैल्यू जोड़ी एक एक्सएमएल संरचित फाइल (। Plist ) पर संग्रहित होती है जो एप बंडल में संग्रहीत होती है।

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

  • उपयोगकर्ता डिफ़ॉल्ट सिस्टम के बारे में

यह ड्राइव पर अधिकतम अनुमति वाला फ़ाइल आकार है। आप इसे देखने के लिए कोड के इस टुकड़े का उपयोग कर सकते हैं!

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *myKey = @"key"; int sizeOfFile = 1024; // Fill in proper file size here NSData myObject; NSString *someFilePath = @"PathToYourFileHere"; for(int i = 1; i < 9999999999999999; i++) { myObject = [NSData dataWithContentsOfFile:someFilePath]; [defaults setObject:myObject forKey:[NSString stringWithFormat:@"%@%i", myKey, i]]; NSLog(@"Iteration: %i, TotalWritten: %i", i, i * sizeOfFile); } 

जहां तक ​​मेरा ज्ञान है वहां NSUserdefaults में भंडारण के लिए कोई सीमा नहीं है।