दिलचस्प पोस्ट
एक स्ट्रिंग में सभी घटनाओं की जगह कैसे चर असाइन जावास्क्रिप्ट में काम करता है? Java प्रोजेक्ट में रिश्तेदार पथ से फ़ाइल कैसे पढ़ा जाए? java.io.File निर्दिष्ट पथ नहीं ढूँढ सकता Enum "वंशानुक्रम" Google Chrome स्थानीय लिंक खोल सकता है? पीडीओ: MySQL सर्वर दूर चला गया है SQL सर्वर, डिफ़ॉल्ट आवृत्ति के लिए एक नामित आवृत्ति परिवर्तित करें? बुनियादी PHP और AJAX OnItemClickListener एंड्रॉइड के साथ सूची दृश्य कॉलम के रूप में सामान्य क्वेरी स्टोर करें? कक्षा खंड को बढ़ाना त्रुटि मैं ईमेल कैसे प्राप्त कर सकता हूं और इसे वेब एप्लिकेशन में प्रोसेस कर सकता हूं जावास्क्रिप्ट document.Write AJAX का उपयोग करते समय सभी शारीरिक सामग्री को बदलता है जावा प्रकार पैरामीटर को कम बाध्य क्यों नहीं किया जा सकता? कैसे सी # कार्यक्रम के भीतर एक संग्रहीत प्रक्रिया को निष्पादित करने के लिए

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

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

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

वेब के समाधान से एकत्रित समाधान "क्या 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 में भंडारण के लिए कोई सीमा नहीं है।