Makes views use monsters from CoreData instead of hard coded ones.

This commit is contained in:
2020-09-12 01:16:56 -07:00
parent fb6418cc80
commit 2e70466891
3 changed files with 26 additions and 20 deletions

View File

@@ -8,6 +8,7 @@
#import "EditMonsterViewController.h"
#import "EditableShortStringTableViewCell.h"
#import "AppDelegate.h"
@interface EditMonsterViewController ()
@@ -15,10 +16,15 @@
@end
@implementation EditMonsterViewController
@implementation EditMonsterViewController {
NSManagedObjectContext *_context;
}
- (void)viewDidLoad {
[super viewDidLoad];
AppDelegate *appDelegate = (AppDelegate*)UIApplication.sharedApplication.delegate;
_context = appDelegate.persistentContainer.viewContext;
self.monsterTableView.dataSource = self;
self.monsterTableView.delegate = self;
}
@@ -32,9 +38,12 @@
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([@"DiscardChanges" isEqualToString:segue.identifier]) {
[_context rollback];
} else if ([@"SaveChanges" isEqualToString:segue.identifier]) {
// TODO: this should use a method on originalMonster to copy values from editingMonster or pass the new monster back some way. Core Data would save and probably trigger a refresh in the receiving view.
self.originalMonster.name = self.editingMonster.name;
[_context refreshObject:self.editingMonster mergeChanges:NO];
[_context save:nil];
} else {
NSLog(@"Unknown Segue %@", segue.identifier);
}

View File

@@ -17,36 +17,32 @@
@end
@implementation LibraryViewController
@implementation LibraryViewController {
NSManagedObjectContext *_context;
}
- (void)viewDidLoad {
[super viewDidLoad];
AppDelegate *appDelegate = (AppDelegate*)UIApplication.sharedApplication.delegate;
NSManagedObjectContext *context = appDelegate.persistentContainer.viewContext;
// Temporary setup of allMonsters until we bind to CoreData.
Monster *pixie = [[Monster alloc] initWithJSONString:@"{\"name\":\"Pixie\"}" andContext:context];
Monster *acolyte = [[Monster alloc] initWithJSONString:@"{\"name\":\"Acolyte\"}" andContext:context];
self.allMonsters = [NSArray arrayWithObjects:acolyte, pixie, nil];
_context = appDelegate.persistentContainer.viewContext;
}
- (void)viewWillAppear:(BOOL)animated {
// TODO: fetch monsters from CoreData
self.allMonsters = [_context executeFetchRequest:[Monster fetchRequest] error:nil];
[self.monstersTable reloadData];
}
- (IBAction)addNewMonster:(id)sender {
AppDelegate *appDelegate = (AppDelegate*)UIApplication.sharedApplication.delegate;
NSManagedObjectContext *context = appDelegate.persistentContainer.viewContext;
Monster *monster = [[Monster alloc] initWithContext:context];
Monster *monster = [[Monster alloc] initWithContext:_context];
monster.name = @"Unnamed Monster";
self.allMonsters = [self.allMonsters arrayByAddingObject:monster];
//DispatchQueue.main.async{"code here"}
[_context save:nil];
[self.monstersTable reloadData];
}
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([@"ShowMonsterDetail" isEqualToString:segue.identifier]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

View File

@@ -18,17 +18,18 @@
@end
@implementation SearchViewController
@implementation SearchViewController {
NSManagedObjectContext *_context;
}
- (void)viewDidLoad {
[super viewDidLoad];
AppDelegate *appDelegate = (AppDelegate*)UIApplication.sharedApplication.delegate;
NSManagedObjectContext *context = appDelegate.persistentContainer.viewContext;
Monster *pixie = [[Monster alloc] initWithContext:context];
pixie.name = @"Pixie";
Monster *acolyte = [[Monster alloc] initWithEntity:[NSEntityDescription entityForName:@"Monster" inManagedObjectContext:context] insertIntoManagedObjectContext:nil];
acolyte.name = @"Acolyte";
self.allMonsters = [NSArray arrayWithObjects:acolyte, pixie, nil];
_context = appDelegate.persistentContainer.viewContext;
}
- (void)viewWillAppear:(BOOL)animated {
self.allMonsters = [_context executeFetchRequest:[Monster fetchRequest] error:nil];
self.foundMonsters= self.allMonsters;
}