рдХреЛрд░ рдбреЗрдЯрд╛ рдореЗрдВ рдХрдИ рд▓рдЧрд╛рддрд╛рд░ рд╕реНрдЯреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд╕рднреА iOS (рдФрд░ MAC OS X) рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдХреЛрд░ рдбреЗрдЯрд╛ рдЬреИрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА ORM рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП)ред

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдиреЗ рдЙрди рд╕рднреА рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рддреЗрдЬреА рдЖрдИ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреБрдЫ рд╕рдВрд╕реНрдерд╛рдУрдВ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рд╕реНрдЯреЛрд░ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реЛрдЧрд╛ред рдореИрдВ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╢реБрд░реВ рдореЗрдВ рдЕрдЦрдВрдб рдПрдирдПрд╕рдПрд╕рдХреНрдпреВрдПрд▓рдЗрдЯрд╕реНрдЯреЛрд░ рдХреЛ рдХрдИ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ред

рдкреНрд░рд▓реЗрдЦрди рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрд╣реБрдд рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ NSPersistentStoreCoordinator рдХреЗ рдЕрдВрджрд░ рдХрдИ NSPersistentStore рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ, рдЙрдиреНрд╣реЗрдВ рд╕реАрдзреЗ рдПрдХ NSManagedObjectContext рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рд╢рд╛рдирджрд╛рд░ рд▓рдЧ рд░рд╣рд╛ рд╣реИред
рдРрдкреНрдкрд▓ рдкреНрд░рд▓реЗрдЦрди рдкрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрддрд╛рдм, рдореБрдЭреЗ Google рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдордиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдЗрдХрдЯреНрдард╛ рдХреА, рдФрд░ Xcode рдХреЗ рд╕рд╛рде рдХрдИ рдШрдВрдЯреЛрдВ рдХреЗ рдпреБрджреНрдз рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдХрдо рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ред рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЦреБрд▓рд╛рд╕рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдИ NSPersistentStore рдХреА рдЬрд╛рдирдХрд╛рд░реА рдПрдХ NSManagedObjectContext рдореЗрдВ рдПрдХрддреНрд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд▓реЗрдЦ рд╣реИ рдЬреЛ рдкреНрд▓рдЧ-рдЗрди рдХреЛ рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ : www.cimgf.com/2009/05/03/core-data-and-plug-ins

рдХреЗрд╡рд▓ рдПрдХ NSManagedObjectModel рдПрдХ NSManagedObjectContext рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреИрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдХрд┐рди рд╕рдВрд╕реНрдерд╛рдУрдВ рдореЗрдВ рднрдВрдбрд╛рд░рдг рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдПрдХ NSManagedObjectModel рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдХрдИ NSManagedObjectModel рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдореЗрдВ рд╕реНрдЯреЛрдореНрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЬрдмрдХрд┐ рд╣рд░ рдПрдХ рдХреЛ рдЕрднреА рднреА рдирд╛рдорд╛рдВрдХрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред

-(NSManagedObjectModel*)managedObjectModel; { if(managedObjectModel)return managedObjectModel; NSBundle*myBundle =[NSBundle bundleForClass:[self class]]; NSArray*bundles =[NSArray arrayWithObject:myBundle]; managedObjectModel =[[NSManagedObjectModel mergedModelFromBundles:bundles] retain]; return managedObjectModel; } 


рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ (рджрд╛рдЧ рдпрд╛ рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд) NSManagedObjectModel рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдордиреНрд╡рдпрдХ рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
 - (NSPersistentStore *)addPersistentStoreWithType:(NSString *)storeType configuration:(NSString *)configuration URL:(NSURL *)storeURLoptions:(NSDictionary *)options error:(NSError **)error 

рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдЧреНрд░рд╣рдг рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
  NSPersistentStore * store = [_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:CONFIG_NAME URL:databaseURL options:options error:&error]; 

рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╡рд╛рд▓реА рдлрд╛рдЗрд▓ рдЕрдкрдиреЗ рдЖрдк рдмрди рдЬрд╛рдПрдЧреАред рд▓рдХреНрд╖реНрдп рд╣рд╛рд╕рд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреА рдЦреБрдж рдХреА рдЖрдБрдЦреЛрдВ рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдХреЛрд░ рдбреЗрдЯрд╛ рд╡рд╣рд╛рдБ рдмрдирд╛рдпрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрд╡рд░реНрдзрдХ рдХрд╛рдВрдЪ рдХреЗ рдиреАрдЪреЗ, NSSQLiteStore рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдирд┐рдХрд▓рд╛ - рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╛рдо рдХреНрдпрд╛ рд╣реИ, рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рд╕реЗ рд╕рднреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдмрд▓ рдЕрднреА рднреА рдЗрд╕рдореЗрдВ рдмрдирд╛рдП рдЧрдП рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рдХрд╛рдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рд╕рдм рдХреБрдЫ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдПрдХ NSManagedObjectModel рд╕рдВрд╕реНрдерд╛рдУрдВ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд▓рдЧ рдард┐рдХрд╛рдиреЛрдВ рдореЗрдВ рднреЗрдЬ рджрд┐рдпрд╛!

рдЕрд▓рдЧ-рдЕрд▓рдЧ, рдЗрд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдк рднреНрд░реВрдг рдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, Apple. рдЧреЛрджреА рдореЗрдВ рдбреЗрд╡рд▓рдкрд░. apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationship.html#//apple_ref/doc/uid/TP40001857-SW5 рдкрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред

рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИред рдЪреВрдВрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдиреЗ рдЕрдкрдиреЗ рдПрдХрдорд╛рддреНрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╣рдорд╛рд░реЗ рдмреНрд░рд╛рдВрдб рдХреЗ рдирдП рднрдВрдбрд╛рд░ рдореЗрдВ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ NSPersistentStoreCoordinator рд╢реНрд░реЗрдгреА рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛

 - (BOOL)migratePersistentStore:(NSURL *)sourceStoreURL withType:(NSString *)sourceType to:(NSURL *)destinationStoreURL type:(NSString *)destinationType andAddWithConfiguration:(NSString *)configuration { NSError *error = nil; NSDictionary *sourceMetadata = [self.class metadataForPersistentStoreOfType:sourceType URL:sourceStoreURL error:&error]; if(sourceMetadata==nil) return NO; NSManagedObjectModel *sourceModel = [NSManagedObjectModel mergedModelFromBundles:nil forStoreMetadata:sourceMetadata]; NSMigrationManager *migrationManager = [[[NSMigrationManager alloc] initWithSourceModel:sourceModel destinationModel:self.managedObjectModel] autorelease]; NSMappingModel *mappingModel = [NSMappingModel mappingModelFromBundles:nil forSourceModel:sourceModel destinationModel:self.managedObjectModel]; if(mappingModel==nil) return NO; BOOL result = [migrationManager migrateStoreFromURL:sourceStoreURL type:sourceType options:nil withMappingModel:mappingModel toDestinationURL:destinationStoreURL destinationType:destinationType destinationOptions:nilerror:&error]; if(result==NO) return NO; NSLog(@"Successful DB migration"); NSDictionary *options = [self.class migrationOptionsWithAutoMigration:NO]; NSPersistentStore * addedStore = [self addPersistentStoreWithType:destinationType configuration:configuration URL:destinationStoreURL options:options error:&error]; return addedStore!= nil; } 

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрдИ рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдирд╛ рд╡рд┐рдлрд▓ рд░рд╣рд╛ред рд╡рд┐рдзрд┐ рдХреА рдкрд╣рд▓реА рдХреЙрд▓ рдПрдХ рдзрдорд╛рдХреЗ рдХреЗ рд╕рд╛рде рдкреВрд░реА рд╣реЛрддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рджреВрд╕рд░реЗ рдХреЙрд▓ рдкрд░, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрд▓рдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╛рдо рдХреЗ рд╕рд╛рде, рдХреЛрд░ рдбреЗрдЯрд╛ рдиреЗ рдореБрдЭреЗ "рджреЛ рдмрд╛рд░ рдПрдХ рд╣реА рд╕реНрдЯреЛрд░ рдХреЛ рдЬреЛрдбрд╝ рдирд╣реАрдВ рд╕рдХрддрд╛" рдХреЛ рддреНрд░реИрдорд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╣рд╛ред рдирддреАрдЬрддрди, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЬрд╣рд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рдФрд░ рдХрд┐рд╕реА рднреА рд▓реЙрдЧ рдФрд░ рдХреИрд╢ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In146896/


All Articles