2012-01-02 16 views
20

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

प्रासंगिक कोड इस तरह दिखता है:

NSError *error = nil; 
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; 
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 
         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 
         [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; 
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) 
{ 

    //NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
    abort(); 
}  

1,1 में मैं NSDictionary *options जोड़ दिया है।

मेरे विचार नियंत्रक में मुझे यकीन है कि जरूरत पंक्तियों इस तरह नहीं के बराबर नहीं है:

if (currentPage.inputType == @"drawing") { 
    [pageView changeToDrawing]; 
} else if (currentPage.inputType == @"text") { 
    [pageView changeToText]; 
} else { 
    currentPage.inputType = @"text"; 
    [pageView changeToDrawing]; 
} 

असल में, इन परिवर्तनों के लिए पर्याप्त है या मैं कुछ और मुझे क्या करना होगा?

उत्तर

24

Here is a very helpful article कोर डेटा संस्करण के संबंध में जो आपके प्रश्न का उत्तर देता है।

कुछ शब्दों में इसे समेटने के लिए, आपको अपनी परियोजना में एक नया मॉडल संस्करण जोड़ना होगा। माइग्रेशन प्रक्रिया के लिए यह आवश्यक है।

संपादित

लिंक ऊपर बदल गया है और नीचे दिए गए लिंक पर पहुंच जाएंगे: Core Data Model Versioning and Data Migration

यदि सब विफल रहता है, गूगल: Core Data Model Versioning and Data Migration apple developer

+0

आपके उत्तर के लिए धन्यवाद, मेरे पास एक संबंधित प्रश्न है। मैंने नया मॉडल संस्करण बनाने से पहले विशेषताओं को जोड़ा, क्या मुझे अपने 1.0 संस्करण से नए विशेषताओं को हटा देना चाहिए और केवल उन्हें अपने 2.0 डेटा मॉडल संस्करण में रखना चाहिए, या इससे कोई फर्क नहीं पड़ता? धन्यवाद! – Anders

+2

बिल्कुल आपको उन्हें 1.0 से हटा देना चाहिए और अगले संस्करण में जोड़ना चाहिए। मैं हाल ही में वास्तव में थोड़ा सा रहा हूँ। 1.0 * बिल्कुल * वही होना चाहिए जो वर्तमान में तैनात है या अन्यथा आपको अपवाद मिलेगा। इसमें गुण और रिश्तों दोनों शामिल हैं। – Jeremy

+0

आह, धन्यवाद। इसे काम करने के लिए मिला। जैसा आपने सुझाव दिया था। :) – Anders