मैं कोर डेटा ढांचे का उपयोग कर डेटाबेस अनुप्रयोग पर काम कर रहा हूं। इस एप्लिकेशन में मुझे यह प्रदर्शित करने की ज़रूरत है कि वर्तमान में आईफोन पर एप्लिकेशन कितना डेटा उपयोग कर रहा है। क्या इसे करने का कोई तरीका है?मुझे अपने कोर डेटा लगातार स्टोर का आकार और फ़ाइल सिस्टम पर खाली स्थान कैसे मिल सकता है?
उत्तर
मुझे this answer on the Apple Dev Forums ऐप्स के होम निर्देशिका विभाजन पर डिस्क स्थान उपलब्ध कराने के लिए उपयोगी होने के लिए उपयोगी पाया गया है (नोट प्रत्येक डिवाइस पर वर्तमान में दो विभाजन हैं)।
अपने स्टोर संग्रह प्राप्त करने के लिए NSPersistentStoreCoordinator
का उपयोग करें।
उपयोग NSFileManager
बाइट में प्रत्येक स्टोर 'आकार पाने के लिए (unsigned long long)
NSArray *allStores = [self.persistentStoreCoordinator persistentStores];
unsigned long long totalBytes = 0;
NSFileManager *fileManager = [NSFileManager defaultManager];
for (NSPersistentStore *store in allStores) {
if (![store.URL isFileURL]) continue; // only file URLs are compatible with NSFileManager
NSString *path = [[store URL] path];
DebugLog(@"persistent store path: %@",path);
// NSDictionary has a category to assist with NSFileManager attributes
totalBytes += [[fileManager attributesOfItemAtPath:path error:NULL] fileSize];
}
ध्यान दें कि कोड ऊपर मेरे ऐप प्रतिनिधि की एक विधि में है, और यह एक संपत्ति persistentStoreCoordinator
है।
बहुत बहुत धन्यवाद :-) – Nic
कोर डेटा में आपका लगातार स्टोर फ़ाइल सिस्टम पर सिर्फ एक फ़ाइल है। जब आप अपना कोर डेटा स्टैक बनाते हैं तो आप इस फ़ाइल को एक्सेस और संभवतः बनाते हैं। निम्नलिखित कोड बाइट्स में लगातार दुकान के आकार और फाइल सिस्टम के रिक्त स्थान, प्रिंट होगा:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *persistentStorePath = [documentsDirectory stringByAppendingPathComponent:@"persistentstore.sqlite"];
NSError *error = nil;
NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:persistentStorePath error:&error];
NSLog(@"Persistent store size: %@ bytes", [fileAttributes objectForKey:NSFileSize]);
NSDictionary *fileSystemAttributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:persistentStorePath error:&error];
NSLog(@"Free space on file system: %@ bytes", [fileSystemAttributes objectForKey:NSFileSystemFreeSize]);
मतलब यह है कि अपने लगातार दुकान persistentstore.sqlite
नाम पर है और आपके आवेदन के लिए दस्तावेजों निर्देशिका में संग्रहित है। यदि आप अपने निरंतर स्टोर के नाम के बारे में अनिश्चित हैं, तो आप कहां आवंटित करते हैं और अपने एनएसपीर्सिस्टेंटस्टोरकॉर्डिनेटर को इनिट करते हैं। दुकान का नाम कहीं भी कोड में कहीं निर्दिष्ट किया जाना चाहिए।
ध्यान दें कि आपके द्वारा फ़ाइल और फ़ाइल सिस्टम विशेषताएँ शब्दकोशों से वापस आने वाले मान NSNumbers हैं, इसलिए यदि आप फ़ाइल आकारों के साथ काम करना चाहते हैं तो आपको उन्हें स्केलर प्रकारों में परिवर्तित करने की आवश्यकता होगी। सावधान रहना एक बात यह है कि ये मान बाइट्स में हैं, इसलिए बहु-गीगाबाइट फाइल सिस्टम के लिए आप 32-बिट पूर्णांक डेटा प्रकारों के साथ संख्या आकार सीमाओं में भाग ले सकते हैं।
धन्यवाद ब्रैड। इसका सहायक ... – Nic
@ ब्रैड: क्या आप जानते हैं कि सिस्टम किसी ऐप को फ़ाइल सिस्टम पर छोड़े गए खाली स्थान के पूर्ण (या बंद) उपयोग का उपयोग करने की अनुमति देता है या नहीं? या क्या फ्री स्पेस अधिकतम लौटा दी गई है कि सिस्टम ऐप को आवंटित कर रहा है? – mahboudz
किसी डिवाइस पर, ऐसा लगता है कि आंतरिक फ्लैश मेमोरी पर कुल स्थान मुक्त हो जाता है (बाइट्स लौटा मूल्य आईट्यून्स द्वारा रिपोर्ट की गई खाली जगह से मेल खाता है)। मुझे लगता है कि एप्लिकेशन के साथ काम करने के लिए बहुत अधिक जगह है। –
सुनिश्चित नहीं हैं कि जहां मैं इसे देखा है, लेकिन मैं मानना है कि डेटाबेस से प्रविष्टियां निकालने जरूरी डेटाबेस फ़ाइल हटना नहीं होंगे। SQLite आंतरिक रूप से भंडारण पुनः प्राप्त करता है और इसका पुन: उपयोग करता है। (यह आरडीबीएमएस के विशिष्ट है।) मेरा मानना है कि वहां कमांड लाइन उपयोगिता है जो इसे कॉम्पैक्ट करेगी, लेकिन यह आपकी मदद नहीं करेगा यदि आपका ऐप फ़ाइल को डेटासेट में छोटा कर देता है (उदाहरण के लिए ओएस के लिए स्पेस पुनः प्राप्त करने के लिए) ।
तो फ़ाइल आकार विधि आपको डेटाबेस के उच्च-पानी-चिह्न आकार की भावना देगी, यह आवश्यक नहीं है कि आप अपने डेटासेट द्वारा उपयोग किए जाने वाले संग्रहण की मात्रा बताएंगे।
- 1. कोर डेटा लगातार स्टोर को कैसे हटाएं
- 2. फ़ाइल सिस्टम बनाम कोर डेटा
- 3. कोर डेटा और कोर स्थान
- 4. कोर डेटा स्टोर
- 5. कोर डेटा - लगातार स्टोर को हटाने के दौरान डेडलॉक
- 6. मुझे संरचना का आकार कैसे मिल सकता है?
- 7. मुझे 2 डी सरणी का आकार कैसे मिल सकता है?
- 8. मुझे 'ऐप स्टोर पर उपलब्ध' लोगो कहां मिल सकता है?
- 9. मुझे जावा में भौतिक मेमोरी आकार कैसे मिल सकता है?
- 10. स्टोर कोर डेटा
- 11. कोर डेटा एनएसडीटा स्टोर कैसे कर सकता है?
- 12. कोर डेटा (आईफोन) का उपयोग कर सीएलएलोकेशन कैसे स्टोर करें?
- 13. मुझे अधिकतम स्टैक आकार कैसे मिल सकता है?
- 14. कोर डेटा डेटाबेस खाली परीक्षण है
- 15. स्टोर ल्यूसीन इंडेक्स फ़ाइल दूरस्थ स्थान पर
- 16. इन-मेमोरी स्टोर के साथ कोर डेटा
- 17. एक्सप्रेस/कनेक्ट और सत्र स्टोर का उपयोग करते समय मुझे सत्र आईडी कैसे मिल सकता है?
- 18. माइग्रेट करने के बजाय कोर डेटा लगातार स्टोर को हटाने (रीस्टकिट का उपयोग करके)
- 19. कोर डेटा स्रोत स्टोर के लिए मॉडल नहीं ढूंढ सकता - मेरा पुराना स्टोर कैसा दिखता है?
- 20. पृष्ठभूमि अपडेट की और कोर डेटा फ़ाइल सुरक्षा
- 21. कोर डेटा क्रॉस-स्टोर प्राप्त संपत्तियों के साथ संबंध
- 22. मुझे Ngen करने के बाद जेनरेट की गई फ़ाइल का स्थान कहां मिल सकता है?
- 23. कोर डेटा: मुझे कई रिश्ते
- 24. कोर डेटा
- 25. मुझे सिस्टम कॉल स्रोत कोड कहां मिल सकता है?
- 26. JSON से लगातार डेटा स्टोर (CoreData, आदि)
- 27. फ़ाइल सिस्टम ब्लॉक आकार
- 28. मुझे अपने विंडोज कंप्यूटर पर my.cnf नहीं मिल रहा है
- 29. कोर डेटा में GUID स्टोर करने के लिए मुझे किस डेटा प्रकार का उपयोग करना चाहिए?
- 30. फ़ाइल_get_contents() पर दूरस्थ फ़ाइल नाम नहीं मिल सकता है और फिर फ़ाइल
इसके अलावा आईफोन में कितना डेटा स्टोर कर सकता है ??? – Nic