// // 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
// // 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
- (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; }
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>
// 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/192090/
All Articles