में डेटाबेस को प्रीलोड करना अतीत में मैंने अपने ऐप को पहले से लोड किए गए डेटाबेस के साथ जारी किया है, इसलिए उपयोगकर्ता को इसे पहले रन पर अपडेट करने की आवश्यकता नहीं थी। वहाँ कुछ कोड मैं इतने पर एक और सवाल में पाया (क्षमा करें, अब और लिंक नहीं है) कि मैं अपने अनुप्रयोग प्रतिनिधि के persistentStoreCoordinator
विधि को जोड़ा गया था:आईओएस 7
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"db.sqlite"];
if (![[NSFileManager defaultManager] fileExistsAtPath:[storeURL path]])
{
NSURL *preloadURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"db" ofType:@"sqlite"]];
NSError* err = nil;
if (![[NSFileManager defaultManager] copyItemAtURL:preloadURL toURL:storeURL error:&err])
{
NSLog (@"Error - Could not preload database.");
}
}
//... more code generated from the template here
}
जब मैं आईओएस 7 में यह करने के लिए प्रयास करते हैं, मैं कोई त्रुटि न पाएं, लेकिन डेटाबेस खाली है (भले ही मेरे mainBundle
में डेटाबेस की सभी जानकारी है जो मैं उम्मीद कर रहा हूं)। मैंने देखा कि applicationDocumentsDirectory
में अधिक डेटाबेस फ़ाइलें (ए। एसक्लाइट-श्म फ़ाइल और एक। एसक्लाइट-वाल फ़ाइल) हैं। क्या मुझे उन फ़ाइलों के साथ कुछ करने की ज़रूरत है? या ऐप के साथ प्रीलोडेड डेटाबेस जहाज रखना अब संभव नहीं है?
संपादित करें: मैंने नई .sqlite-shm और .sqlite-wal फ़ाइलों को कॉपी करने के लिए कोड जोड़ने का प्रयास किया, लेकिन इससे मदद नहीं मिलती है।
हां, यही 'options' शब्दकोश काम कर देता है जोड़ने। मैं आपके द्वारा लिंक किए गए वीडियो की जांच करूंगा, और उम्मीद है कि यह कुछ ऐसा नहीं है जिसे मैं आवश्यकता होगी =)। अन्यथा मुझे लगता है कि मुझे एक और समाधान मिलना होगा, लेकिन ऐसा लगता है कि अब यह काम करता है। – GeneralMike
डब्ल्यूएएल बहुप्रचारित अनुप्रयोगों में प्रदर्शन बढ़ाता है, इसलिए जर्नल मोड को बदलने के बारे में सावधान रहें। मुझे नहीं पता कि WAL सक्षम के साथ पूर्व-जनसंख्या वाले डेटाबेस को कैसे शिप किया जाए, हालांकि। –
@ डेविड कैंट: मैं इस बिंदु पर अपने ऐप के प्रदर्शन के बारे में बहुत चिंतित नहीं हूं। मेरे ऐप के पिछले संस्करण में डाटाबेस ऑपरेशंस बहुत धीमी थीं, लेकिन मैंने बर्बाद जगह को खत्म करने के लिए अपनी कई टेबलों को काफी कम कर दिया और मेरे fetches को एक सत्र में जिस जानकारी की आवश्यकता होगी, उसे बेहतर तरीके से बदल दिया। उन संशोधनों के बाद, वस्तुतः कोई पता लगाने योग्य देरी नहीं है। अगर कुछ बदलाव और प्रदर्शन फिर से पीड़ित होता है, तो मैं फिर भी वाल में देखने के लिए ध्यान रखूंगा - धन्यवाद। – GeneralMike