CoreDataでCRUD

とりあえずコードだけ貼っとく。あとでまとめる。

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
    	
	/* SELECT & UPDATE */
	// create context
	NSManagedObjectContext *context = [self managedObjectContext];
	// create request
	NSFetchRequest *request = [[NSFetchRequest alloc] init];
	NSEntityDescription *personDescription = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:context];
	[request setEntity: personDescription]; // entity description
	// fetch it!!
	NSError *error;
	NSArray *result = [context executeFetchRequest:request error:&error];
	NSLog(@"%d", [result count]);
	for (Person *e in result) {
		NSLog(@">> name: %@, age: %@", e.name, e.age);
		e.age = [NSNumber numberWithInt:[result count]];
	}
	
	/* INSERT */
	Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context];
	person.name = @"thata";
	person.age = [NSNumber numberWithInt:17];
	[context save:&error];

	/* DELETE */
	// insertしてから...
	person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context];
	person.name = @"hakanai";
	person.age = [NSNumber numberWithInt:0];
	[context save:&error];
	
	NSLog(@"インサートされたはず");
	result = [context executeFetchRequest:request error:&error];
	for (Person *e in result) {
		NSLog(@">> name: %@, age: %@", e.name, e.age);
	}
	
	// delete
	result = [context executeFetchRequest:request error:&error];
	NSInteger lastIndex = [result count] - 1;
	Person *lastPerson = [result objectAtIndex:lastIndex];
	NSLog(@"この人が消えます");
	NSLog(@">> name: %@, age: %@", lastPerson.name, lastPerson.age);
	NSLog(@"今消した");
	[context deleteObject: lastPerson];
	[context save:&error];
	
	// 消されているはず
	NSLog(@"消されているはず");
	result = [context executeFetchRequest:request error:&error];
	for (Person *e in result) {
		NSLog(@">> name: %@, age: %@", e.name, e.age);
	}
	
	
    // Override point for customization after app launch    

	[window makeKeyAndVisible];
}