рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ActiveRecord рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдкрд░рд┐рдЪрдп


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

рдХреЛрд░ рдбреЗрдЯрд╛ рдФрд░ рд╕рдХреНрд░рд┐рдп рд░рд┐рдХреЙрд░реНрдб


рдХреЛрд░ рдбреЗрдЯрд╛ рд╕рдХреНрд░рд┐рдп рд░рд┐рдХреЙрд░реНрдб рдкреИрдЯрд░реНрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЛрдЭрд┐рд▓ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ Apple рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

NSManagedObjectContext *moc = [self managedObjectContext]; NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Employee" inManagedObjectContext:moc]; NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; [request setEntity:entityDescription]; // Set example predicate and sort orderings... NSNumber *minimumSalary = ...; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(lastName LIKE[c] 'Worsley') AND (salary > %@)", minimumSalary]; [request setPredicate:predicate]; NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES]; [request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]]; [sortDescriptor release]; NSError *error; NSArray *array = [moc executeFetchRequest:request error:&error]; if (array == nil) { // Deal with error... } 


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

рдЬрд╛рджреБрдИ рдкрд╛рдВрдбрд╛ рдиреЗ рдХреЛрд░ рдбреЗрдЯрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ ActiveRecord рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ред

рдпрд╣рд╛рдБ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдХреЗрд╡рд▓ рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП ActiveRecord рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:
 NSNumber *minimumSalary = ...; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(lastName LIKE[c] 'Worsley') AND (salary > %@)", minimumSalary]; NSArray *employees = [Employee findAllSortedBy:@"firstName" asceding:YES withPredicate:predicate]; 


рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП ActiveRecord рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

1. рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓реАрдирд░ рдХреЛрдб рдмрдирд╛рдПрдВ
2. рдЖрдкрдХреЛ рд╕рд░рд▓ рд╕рд┐рдВрдЧрд▓-рд▓рд╛рдЗрди рдХреНрд╡реЗрд░реА рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
3. рдЗрд╕рдХреА рд╕рд╛рджрдЧреА рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣ рдЖрдкрдХреЛ NSFetchRequest рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрдм рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП ActiveRecord рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рд╕рдорд╛рдпреЛрдЬрди


рдХреЛрд░ рдбреЗрдЯрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП ActiveRecord рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:



MyProjectName-Prefix.pch рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ #import "CoreData+ActiveRecordFetching.h" .h #import "CoreData+ActiveRecordFetching.h"

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ AppDelegate рдореЗрдВ: didFinishLaunchingWithOptions: рдПрдХ рдХреЙрд▓ рдЬреЛрдбрд╝реЗрдВ
[ActiveRecordHelpers setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"MyProject.sqlite"];
рдпрд╣ рд╡рд┐рдзрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╛рдо рдФрд░ рдореЙрдбрд▓ .xcdatamodeld рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдПрдХ NSPersistentStore рдмрдирд╛рдПрдЧреА рдЬрд┐рд╕реЗ рд╡рд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдВрдбрд▓ рдореЗрдВ рдкрд╛рддрд╛ рд╣реИред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рдмрдВрдзрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн


рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, NSManagedObjectContext рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП ActiveRecord рдЖрдкрдХреЛ DefaultContext рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ NSManagedObjectContext рд╣реЛрдЧрд╛ред рдЕрдиреНрдп рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП NSManagedObjectContext рдмрдирд╛рдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

NSManagedObjectContext *myNewContext = [NSManagedObjectContext newContext];

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

рдбреЗрдЯрд╛ рд╕реИрдВрдкрд▓рд┐рдВрдЧ


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдлрд╝реАрд▓реНрдб рдЖрдИрдбреА, рд▓рдВрдмрд╛рдИ рдФрд░ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЧ рдЧреАрдд рд╣реИ:

@interface Song : NSManagedObject
@property (nonatomic, retain) NSNumber * length;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * id;
@end

#import "Song.h"

@implementation Song
@dynamic length;
@dynamic name;
@dynamic id;
@end


рдХреЛрд░ рдбреЗрдЯрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП ActiveRecord рдореЗрдВ "NSManagedObject + ActiveRecord.h" рд╢реНрд░реЗрдгреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЕрд░реНрдерд╛рдд, NSManagedObject рдХреЗ рд╕рднреА рд╡рдВрд╢рдЬ Core Data рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП ActiveRecord рдХреЛ рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗред
рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП ActiveRecord рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рдзрд┐рдпрд╛рдБ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рднреА рд╕реЙрдиреНрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреЙрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

NSArray *songs = [Song findAll];

рдирд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЫрд╛рдБрдЯреЗ рдЧрдП рдЧреАрддреЛрдВ рдХреА рдЦреЛрдЬ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧреА:

NSArray *songsSorted = [Song findAllSortedByProperty:@"name" ascending:YES];

рдпрджрд┐ рдХреЛрдИ рдЧрд╛рдирд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди рдХреЗ рд╕рд╛рде рд╣реИ, рддреЛ рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

Song *song = [Song findFirstByAttribute:@"name" withValue:@"Imagine"];

рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП ActiveRecord рднреА рдЖрдкрдХреЛ NSPredicate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

NSPredicate * songFilter = [NSPredicate predicateWithFormat: @ "рд▓рдВрдмрд╛рдИ>% @", ...];

NSArray *songs = [Song findAllWithPredicate:peopleFilter];

рдбреЗрдЯрд╛ рд╕рдВрдкрд╛рджрди


рдХреЛрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП ActiveRecord рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:

Song *song = [Song createEntity];

рд╣рдЯрд╛рдиреЗ:

[song deleteEntity];

рд╕рдВрдкрд╛рджрди рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ:

Song *song = [Song createEntity];
song.name = "stairway to heaven";
song.length = [NSNumber numberWithInt:150];


рдбреЗрдЯрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╕рдВрджрд░реНрдн рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

[[NSManagedObjectContext defaultContext] save];

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


All Articles