IOS рдХреЗ рд▓рд┐рдП рдХреЛрд░ рдбреЗрдЯрд╛ред рдЕрдзреНрдпрд╛рдп рд╕рдВрдЦреНрдпрд╛ 2ред рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣рд┐рд╕реНрд╕рд╛

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



рд╕рд╛рдордЧреНрд░реА:



рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐

рд╣рдо рдЗрд╕ рдореЙрдбрд▓ рдХреЛ рдмрдирд╛рдПрдВрдЧреЗ:
рдЫрд╡рд┐

рдлрд┐рд░ рдХреБрдЫ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЙрдирд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред рдЖрдЙрдЯрдкреБрдЯ рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рддрд╛рдХрд┐ рд╣рдо рджреГрд╢реНрдп рдкреНрд░рд╢реНрди рднреА рди рдкреВрдЫреЗрдВред
рдХреНрдпрд╛ рдЖрдк рддреИрдпрд╛рд░ рд╣реИрдВ? рддреЛ рдлрд┐рд░ рдЪрд▓рд┐рдП!

рд╡рд┐рд╡рд░рдг

рд╣рдо рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рд╕рдВрд╕рд╛рдзрди - рд╣реИрдмрд░ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреНрд░рд╛рдл рдмрдирд╛рдПрдВрдЧреЗред
N рдореБрдЦреНрдп рд╡рд╕реНрддреБрдПрдБ рд╣реИрдВ:

рдЗрддрдирд╛ рд╣реА рдХрд╛рдлреА рд╣реЛрдЧрд╛ред

рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреМрди рд╕рд╛ рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ?


рдХрд╛рдо рдкрд░ рд▓рдЧрдирд╛

Xcode рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рдирдпрд╛ рдПрдХрд▓ рджреГрд╢реНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдБ:


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо, рдЙрдкрд╕рд░реНрдЧ рдФрд░ рдЕрдзрд┐рдХ рджрд░реНрдЬ рдХрд░реЗрдВ:
рдЫрд╡рд┐

рдкрд░рд┐рдЪрд┐рдд рдЦрд┐рдбрд╝рдХреА:
рдЫрд╡рд┐

рдХреЛрд░ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВ

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЛрд░ рдбреЗрдЯрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬреЛрдбрд╝реЗрдВ:
рдЫрд╡рд┐

рдореЙрдбрд▓ рдмрдирд╛рдПрдВ

рдирдИ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ -> iOS -> CoreData -> рдбреЗрдЯрд╛ рдореЙрдбрд▓
рдЫрд╡рд┐
рдЫрд╡рд┐

рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рд╕реЗред
рдПрдХ рдирдИ рдЗрдХрд╛рдИ рдмрдирд╛рдПрдБ рдФрд░ рдЗрд╕реЗ рдмреНрд▓реЙрдЧрдкреЛрд╕реНрдЯ рдХрд╣реЗрдВ, рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдХреИрдкреНрд╢рди (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рдФрд░ рдкрд╛рда (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рдЬреЛрдбрд╝реЗрдВред
рдЫрд╡рд┐

рд╣рдо рдПрдХ рдирдИ рдЗрдХрд╛рдИ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╣рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЕрд╡рддрд╛рд░ (рд╕реНрдЯреНрд░рд┐рдВрдЧ), рдИрдореЗрд▓ (рд╕реНрдЯреНрд░рд┐рдВрдЧ), рд▓рд┐рдВрдЧ (рджрд╢рдорд▓рд╡), рдХрд░реНрдо (рдкреВрд░реНрдгрд╛рдВрдХ 16), рдЙрдкрдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ), рд░реЗрдЯрд┐рдВрдЧ (рдкреВрд░реНрдгрд╛рдВрдХ 16) рдЬреЛрдбрд╝реЗрдВред
рдЫрд╡рд┐

рдПрдХ рдирдИ рдЗрдХрд╛рдИ рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕реЗ рдЯреИрдЧ рдХрд░реЗрдВ , рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рдЬреЛрдбрд╝реЗрдВред
рдЫрд╡рд┐

рдПрдХ рдирдИ рдЗрдХрд╛рдИ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдирд╛рдо рджреЗрдВ рд╣рдм , рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ), рд▓рдХреНрд╖реНрдп (рдмреБрд▓рд┐рдпрди) рдЬреЛрдбрд╝реЗрдВред
рдЫрд╡рд┐

рдПрдХ рдирдИ рдЗрдХрд╛рдИ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдирд╛рдо рджреЗрдВ, рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдХреИрдкреНрд╢рди (рд╕реНрдЯреНрд░рд┐рдВрдЧ), рдЯреЗрдХреНрд╕реНрдЯ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рдЬреЛрдбрд╝реЗрдВред
рдЫрд╡рд┐

рдПрдХ рдирдИ рдЗрдХрд╛рдИ рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВ , рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд╛рда (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рдЬреЛрдбрд╝реЗрдВред
рдЫрд╡рд┐

рд╣рдо рдПрдХ рдирдИ рдЗрдХрд╛рдИ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕рдВрдЧрдарди рдХрд╣рддреЗ рд╣реИрдВ, рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ), рд░реЗрдЯрд┐рдВрдЧ (рдкреВрд░реНрдгрд╛рдВрдХ 16) рдЬреЛрдбрд╝реЗрдВред
рдЫрд╡рд┐

рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ:
рдЫрд╡рд┐

рдЕрдм рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ рдХрдВрдкрдиреА рдХреЗ рдЦрд╛рддреЗ рдореЗрдВ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдХрд░реНрдордЪрд╛рд░реА) рд╣реИрдВред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдХрдИ рдмреНрд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд╣реИрдВ, рдмреНрд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ рдХрдИ рдЯреИрдЧ рдФрд░ рд╣рдм рд╣реИрдВред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдХрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рдФрд░ рдкреНрд░рд╢реНрди рдХреЗ рдХрдИ рдЙрддреНрддрд░ рд╣реИрдВред

рдЪрд▓реЛ "рдХрдВрдкрдиреА рдЦрд╛рддрд╛" (рдПрдХ-рд╕реЗ-рдХрдИ) "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛" рд╕рдВрдмрдВрдз рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рд╕рдВрдЧрдарди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рд░рд┐рд╢реНрддреЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ "+" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рд╕рдВрдмрдВрдз рдЬреЛрдбрд╝реЗрдВ:
рдЫрд╡рд┐

рдЪреВрдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ Xcode рдПрдХ-рд╕реЗ-рдПрдХ рд╕рдВрдмрдВрдз рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдкреНрд░рдХрд╛рд░ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛:
рдЫрд╡рд┐

рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдЧрдарди рдореЗрдВ рдЕрдм рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВред рд╣рдо рдЙрд▓рдЯрд╛ рдХреНрд╖реЗрддреНрд░ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдХрд╛рдИ рдореЗрдВ рдПрдХ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕рдВрдЧрдарди рдХрд╣реЗрдВ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд┐рд╕ рд╕рдВрдЧрдарди рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдХрд╣реАрдВ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреНрд╖реЗрддреНрд░ рд╢реВрдиреНрдп рд╣реЛрдЧрд╛):
рдЫрд╡рд┐

рдЕрдм, рд╕рдВрдЧрдарди рдЗрдХрд╛рдИ рдХрд╛ рд╕рдВрдкрд╛рджрди рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ рдФрд░ рд╕рдВрдЧрдарди рдореЗрдВ рдЙрд▓рдЯрд╛ рдХреНрд╖реЗрддреНрд░ рд╕реЗрдЯ рдХрд░реЗрдВ:
рдЫрд╡рд┐

рдЕрдм рд╡рд╕реНрддреБ рдХрд╛ рдЧреНрд░рд╛рдл рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
рдЫрд╡рд┐

рдмрд╛рдХреА рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдореИрдВрдиреЗ рдЬреЛ рдХрд┐рдпрд╛, рдЙрд╕рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪреЗрдВред
рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдХ-рд╕реЗ-рдПрдХ рд╕реЗ рдПрдХ рд╕реЗ рдХрдИ рдореЗрдВ рдХреИрд╕реЗ рдмрджрд▓рд╛ рдЬрд╛рдП - рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред
рдЕрдВрддрд┐рдо рддрд╕реНрд╡реАрд░:
рдЫрд╡рд┐

рдПрдХ рд╕рдВрдЧрдарди рдмрдирд╛рдПрдВ

рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ AppDelegate.h рдореЗрдВ рд╣реИ:
// // TMAppDelegate.h // Habrahabr // // Created by AndrewShmig on 8/31/13. // Copyright (c) 2013 TM. All rights reserved. // #import <UIKit/UIKit.h> #import <CoreData/CoreData.h> @class TMViewController; @interface TMAppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) TMViewController *viewController; @property (nonatomic, strong) NSManagedObjectModel *managedObjectModel; @property (nonatomic, strong) NSPersistentStoreCoordinator *persistentStoreCoordinator; @property (nonatomic, strong) NSManagedObjectContext *managedObjectContext; @end 

рдФрд░ AppDelegate.m рдореЗрдВ:
 // // TMAppDelegate.m // Habrahabr // // Created by AndrewShmig on 8/31/13. // Copyright (c) 2013 TM. All rights reserved. // #import "TMAppDelegate.h" @implementation TMAppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { return YES; } #pragma mark - Core Data Stack - (NSManagedObjectModel *)managedObjectModel { if(nil != _managedObjectModel) return _managedObjectModel; _managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; return _managedObjectModel; } - (NSPersistentStoreCoordinator *)persistentStoreCoordinator { if(nil != _persistentStoreCoordinator) return _persistentStoreCoordinator; NSURL *storeURL = [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] URLByAppendingPathComponent:@"Habrahabr.sqlite"]; NSError *error = nil; _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel]; if(![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]){ NSLog(@"Unresolved error %@, %@", error, [error userInfo]); abort(); } return _persistentStoreCoordinator; } - (NSManagedObjectContext *)managedObjectContext { if(nil != _managedObjectContext) return _managedObjectContext; NSPersistentStoreCoordinator *store = self.persistentStoreCoordinator; if(nil != store){ _managedObjectContext = [[NSManagedObjectContext alloc] init]; [_managedObjectContext setPersistentStoreCoordinator:store]; } return _managedObjectContext; } @end 

рд╣рдо рдЖрд╡реЗрджрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ: didFinishLaunchingWithOptions: рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡рд┐рдзрд┐:
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //   NSManagedObject *yandex = [NSEntityDescription insertNewObjectForEntityForName:@"Organization" inManagedObjectContext:self.managedObjectContext]; [yandex setValue:@"Yandex Inc." forKey:@"name"]; [yandex setValue:@672 forKey:@"rating"]; //   Yandex NSManagedObject *pupkin = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:self.managedObjectContext]; [pupkin setValue:@"VaseaPup" forKey:@"nickname"]; [pupkin setValue:@"vasilisa@yandex.ru" forKey:@"email"]; [pupkin setValue:@1 forKey:@"gender"]; // 0 - unknown, 1 - male, 2 - female [pupkin setValue:@0 forKey:@"karma"]; [pupkin setValue:@0 forKey:@"rating"]; NSManagedObject *gosha = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:self.managedObjectContext]; [gosha setValue:@"Goshka" forKey:@"nickname"]; [gosha setValue:@"gosha.k@yandex.ru" forKey:@"email"]; [gosha setValue:@0 forKey:@"gender"]; [gosha setValue:@0 forKey:@"karma"]; [gosha setValue:@0 forKey:@"rating"]; //     NSMutableSet *employees = [yandex mutableSetValueForKey:@"employees"]; [employees addObject:pupkin]; [employees addObject:gosha]; //     [self saveContext]; NSLog(@"Finish!"); return YES; } 

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред рдбреЗрдЯрд╛ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдЗрд╕реЗ рджреЗрдЦреЗрдВред
Habrahabr.sqlite рдлрд╝рд╛рдЗрд▓ рдвреВрдВрдвреЗрдВ:
рдЫрд╡рд┐

рдЯрд░реНрдорд┐рдирд▓ рдЪрд▓рд╛рдПрдБ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
 AndrewShmigs-MacBook-Pro:~ new$ cd "/Users/new/Library/Application Support/iPhone Simulator/6.1/Applications/95B0716A-9C2C-4BD8-8117-62FB46BB5879" AndrewShmigs-MacBook-Pro:95B0716A-9C2C-4BD8-8117-62FB46BB5879 new$ ls Documents Habrahabr.app Library tmp AndrewShmigs-MacBook-Pro:95B0716A-9C2C-4BD8-8117-62FB46BB5879 new$ cd Documents/ AndrewShmigs-MacBook-Pro:Documents new$ ls Habrahabr.sqlite AndrewShmigs-MacBook-Pro:Documents new$ sqlite3 Habrahabr.sqlite SQLite version 3.7.12 2012-04-03 19:43:07 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .schema CREATE TABLE ZBLOGPOST ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZAUTHOR INTEGER, ZCAPTION VARCHAR, ZTEXT VARCHAR ); CREATE TABLE ZHAB ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZTARGET INTEGER, ZBLOGPOSTS INTEGER, ZNAME VARCHAR ); CREATE TABLE ZORGANIZATION ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZRATING INTEGER, ZNAME VARCHAR ); CREATE TABLE ZQUESTION ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZAUTHOR INTEGER, ZCAPTION VARCHAR, ZTEXT VARCHAR ); CREATE TABLE ZRESPONSE ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZQUESTION INTEGER, ZTEXT VARCHAR ); CREATE TABLE ZTAG ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZBLOGPOST INTEGER, ZNAME VARCHAR ); CREATE TABLE ZUSER ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZKARMA INTEGER, ZRATING INTEGER, ZORGANIZATION INTEGER, ZGENDER DECIMAL, ZAVATAR VARCHAR, ZEMAIL VARCHAR, ZNICKNAME VARCHAR ); CREATE TABLE Z_METADATA (Z_VERSION INTEGER PRIMARY KEY, Z_UUID VARCHAR(255), Z_PLIST BLOB); CREATE TABLE Z_PRIMARYKEY (Z_ENT INTEGER PRIMARY KEY, Z_NAME VARCHAR, Z_SUPER INTEGER, Z_MAX INTEGER); CREATE INDEX ZBLOGPOST_ZAUTHOR_INDEX ON ZBLOGPOST (ZAUTHOR); CREATE INDEX ZHAB_ZBLOGPOSTS_INDEX ON ZHAB (ZBLOGPOSTS); CREATE INDEX ZQUESTION_ZAUTHOR_INDEX ON ZQUESTION (ZAUTHOR); CREATE INDEX ZRESPONSE_ZQUESTION_INDEX ON ZRESPONSE (ZQUESTION); CREATE INDEX ZTAG_ZBLOGPOST_INDEX ON ZTAG (ZBLOGPOST); CREATE INDEX ZUSER_ZORGANIZATION_INDEX ON ZUSER (ZORGANIZATION); sqlite> select * from ZORGANIZATION; 1|3|1|672|Yandex Inc. sqlite> select * from ZUSER; 1|7|1|0|0|1|0||gosha.k@yandex.ru|Goshka 2|7|1|0|0|1|1||vasilisa@yandex.ru|VaseaPup sqlite> 

рдЕрдм рд╣рдо рдХрд┐рд╕реА рдПрдХ рдХрд░реНрдордЪрд╛рд░реА рд╕реЗ рдПрдХ рдкреНрд░рд╢реНрди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреЛрд╕реНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред
 //     NSManagedObject *whoAmI = [NSEntityDescription insertNewObjectForEntityForName:@"Question" inManagedObjectContext:self.managedObjectContext]; [whoAmI setValue:@"Who am I?" forKey:@"caption"]; [whoAmI setValue:@"    ." forKey:@"text"]; NSMutableSet *goshasQuestions = [gosha mutableSetValueForKey:@"questions"]; [goshasQuestions addObject:whoAmI]; 

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдПрдБ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
 sqlite> select * from ZQUESTION; 1|4|1|4|Who am I?|    . sqlite> 

рдХрд░реНрдордЪрд╛рд░реА Vasya Pupkin рдореЗрдВ рдПрдХ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдЬреЛрдбрд╝реЗрдВ:
 //       NSManagedObject *newPost = [NSEntityDescription insertNewObjectForEntityForName:@"Blogpost" inManagedObjectContext:self.managedObjectContext]; [newPost setValue:@"yandex. & yandex. & yandex." forKey:@"caption"]; [newPost setValue:@"Some text" forKey:@"text"]; //    NSManagedObject *hab1 = [NSEntityDescription insertNewObjectForEntityForName:@"Hab" inManagedObjectContext:self.managedObjectContext]; [hab1 setValue:@"iOS" forKey:@"name"]; [hab1 setValue:@YES forKey:@"target"]; NSManagedObject *hab2 = [NSEntityDescription insertNewObjectForEntityForName:@"Hab" inManagedObjectContext:self.managedObjectContext]; [hab2 setValue:@"Objective-C" forKey:@"name"]; [hab2 setValue:@YES forKey:@"target"]; NSMutableSet *habs = [newPost mutableSetValueForKey:@"habs"]; [habs addObject:hab1]; [habs addObject:hab2]; [[pupkin mutableSetValueForKey:@"blogposts"] addObject:newPost]; 

рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖:
 sqlite> select * from ZBLOGPOST; 1|1|1|5|yandex. & yandex. & yandex.|Some text sqlite> select * from ZHAB; 1|2|1|1|1|iOS 2|2|1|1|1|Objective-C sqlite> 


рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ

рдЙрди рд╕рднреА рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдФрд░ рдХрдВрдкрдиреА рдХреЗ рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдПрдВ рдЬрд┐рдирдореЗрдВ рд╡реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЙрд╕реА рддрд░реАрдХреЗ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рд╣рдордиреЗ рдбреЗрдЯрд╛ рд░рд┐рдХреЙрд░реНрдб рд▓рд┐рдЦрд╛ рдерд╛ред
  NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"User"]; NSArray *allUsers = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil]; for(NSManagedObject *user in allUsers){ NSString *nickname = [user valueForKey:@"nickname"]; NSString *organization = [user valueForKeyPath:@"organization.name"]; NSLog(@"%@ works at %@", nickname, organization); } 

рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рд▓рдЧрднрдЧ рдорд┐рд▓рддреЗ рд╣реИрдВ (рдореЗрд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдИ рдмрд╛рд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдбреЗрдЯрд╛ рднреА рдХрдИ рдмрд╛рд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛):
 2013-08-31 13:00:27.255 Habrahabr[18148:c07] Goshka works at Yandex Inc. 2013-08-31 13:00:27.257 Habrahabr[18148:c07] VaseaPup works at Yandex Inc. 2013-08-31 13:00:27.258 Habrahabr[18148:c07] VaseaPup works at Yandex Inc. 2013-08-31 13:00:27.258 Habrahabr[18148:c07] Goshka works at Yandex Inc. 2013-08-31 13:00:27.259 Habrahabr[18148:c07] VaseaPup works at Yandex Inc. 2013-08-31 13:00:27.259 Habrahabr[18148:c07] Goshka works at Yandex Inc. 2013-08-31 13:00:27.260 Habrahabr[18148:c07] Finish! 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдЙрд╕ рд╕рдВрдЧрдарди рдХрд╛ рдирд╛рдо рдХреИрд╕реЗ рдорд┐рд▓рд╛ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ? рдФрд░? рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛!

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ

рдкреНрд░рдпреЛрдЧ! рдЕрдЧрд░ рдХреБрдЫ рдЯреВрдЯрддрд╛ рд╣реИ рддреЛ рдбрд░реЛ рдордд, рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдкреВрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред

рдЧреБрдб рд▓рдХ рдФрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рднрд╛рдЧ рдХрд╛ рдЖрдирдВрдж рд▓рд┐рдпрд╛ред

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


All Articles