рдкрд░рд┐рдЪрдп
рд╕рдХреНрд░рд┐рдп рд░рд┐рдХреЙрд░реНрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рд╣реИ рдЬреЛ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрдХреНрд╖рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдкрдВрдХреНрддрд┐ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЯреЗрдмрд▓ рдХреЗ рдХреЙрд▓рдо рдХреЗ рдЕрдиреБрд░реВрдк рдбрд╛рд▓рдиреЗ рд╡рд╛рд▓реЗ рдЧреБрдг, рдЕрдкрдбреЗрдЯ рдФрд░ рдбрд┐рд▓реАрдЯ рдЬреИрд╕реЗ рдкреНрд▓рд╕ рдЧреБрдг рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИ, рдЬрдм рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкрдВрдХреНрддрд┐ рднреА рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИред
рдХреЛрд░ рдбреЗрдЯрд╛ рдФрд░ рд╕рдХреНрд░рд┐рдп рд░рд┐рдХреЙрд░реНрдб
рдХреЛрд░ рдбреЗрдЯрд╛ рд╕рдХреНрд░рд┐рдп рд░рд┐рдХреЙрд░реНрдб рдкреИрдЯрд░реНрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЛрдЭрд┐рд▓ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ
Apple рдХрд╛
рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
NSManagedObjectContext *moc = [self managedObjectContext]; NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Employee" inManagedObjectContext:moc]; NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; [request setEntity:entityDescription];
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд░реНрдордЪрд╛рд░реА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдирд╛рдо рдореЗрдВ "рд╡реЙрд░реНрд╕реНрд▓реЗ" рдФрд░ рдиреНрдпреВрдирддрдо рд╡реЗрддрди рд╕реЗ рдКрдкрд░ рдХрд╛ рд╡реЗрддрди рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ "рдЕрддрд┐рд░рд┐рдХреНрдд" рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдЬрд╛рджреБрдИ рдкрд╛рдВрдбрд╛ рдиреЗ
рдХреЛрд░ рдбреЗрдЯрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ
рд▓рд┐рдП рдЕрдкрдиреЗ
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];