मुझे दो अलग xcdatamodel फ़ाइलों द्वारा परिभाषित स्टोर से माइग्रेट करते समय हल्के माइग्रेशन करने में समस्या आ रही है।कोर डेटा - लाइटवेट माइग्रेशन और एकाधिक कोर डेटा मॉडल फाइलें (xcdatamodel)
मेरे ऐप के संस्करण 1.0 में, मॉडल मॉडल-ए में मॉडलिंग-ए और अन्य सभी चीज़ों में मॉडल को तोड़ दिया गया था। संकलन करते समय, मॉडल को एक साथ समूहीकृत किया जाएगा और सब कुछ सुचारू रूप से आगे बढ़ेगा।
नए संस्करण, 1.1 पर काम करते समय, मैंने मॉडल-बी में एक नया मॉडल संस्करण जोड़कर और उस नए संस्करण को सक्रिय के रूप में सेट करके मॉडल-बी को अपग्रेड किया।
समस्या तब उठती है जब 1.0 से 1.1 तक अपग्रेड हो जाती है। ऐसा लगता है कि कोर डेटा डिस्क पर मॉडल स्टोर (संस्करण 1.0 द्वारा बनाया गया) की जांच करता है और मॉडल का वर्णन करता है जो इसका वर्णन करता है लेकिन पूरे स्टोर को परिभाषित करने वाला एक एकल मॉडल ढूंढने में असमर्थ है (मॉडल-ए केवल कवर एनालिटिक्स, और मॉडल-बी कवर बाकी सब कुछ), इसलिए यह "स्रोत स्टोर के लिए मॉडल नहीं ढूंढ सकता" त्रुटि फेंकता है।
क्या किसी को मॉडल को अलग करने का समाधान मिला है, लेकिन अभी भी उन्नत माइग्रेशन को परिभाषित करने के अतिरिक्त परेशानी के बिना उन्नयन + हल्के माइग्रेशन को काम करने की इजाजत है?
NSArray *modelNames = [NSArray arrayWithObjects:@"model-A", @"model-B", nil];
NSMutableArray *models = [NSMutableArray array];
for (NSString *name in modelNames)
{
LogInfo(@"loading model %@", name);
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:name withExtension:@"momd"];
NSManagedObjectModel *model = [[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL] autorelease];
[models addObject:model];
}
// combine all the separate models into one big one
objectModel = [[NSManagedObjectModel modelByMergingModels:models] retain];
NSURL *documentsDirectory = [NSURL fileURLWithPath:[SuperFileManager documentsDirectory] isDirectory:YES];
NSURL *storeURL = [documentsDirectory URLByAppendingPathComponent:@"database.sqlite"];
NSError *error = nil;
coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:objectModel];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
nil];
if (![coordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:options
error:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
इस पर कोई अपडेट? – codepushr
@ कोडिंग्रोग - दुर्भाग्य से नहीं। टीम जिस समय मैं कोर डेटा का उपयोग करके त्याग कर रहा था और मैंने एंड्रॉइड प्रोग्रामिंग पर स्विच किया था। माफ़ कीजिये। :/ – Mark