I am a beginner and when I first made this application (simple to-do list app) I did not know about Core Data. Now I am trying to implement Core Data but it seems like if I want to do so, I basically have to change my application completely. For example, I created a new Master Detail Application with Core Data and compared it to my current application, and basically none of it is the same.

One especially confusing part is that in my current Table View, I have two sections which get their objects from two different arrays. If I were to add Core Data, I would have no idea how to do so. Would I have to eliminate the arrays completely and only use NSFetchedResultsController? Also, in my application I have modal view controllers. In the Master Detail application it seems that Core Data only works in the Master view. I have no idea how I would implement core data in a modal view controller (which defines the values for a task object). Would I have to declare properties for all the managedObjectContext, managedObject, entityDescription, fetchRequest, etc. again in the modal view controller.h?

Here is some of my code if you care:

TableViewController.m

```
-(NSMutableArray *)taskArray {
    if (!taskArray) {
        taskArray = [NSMutableArray array];
    }
    return taskArray;
}
-(NSMutableArray *)completedArray {
    if (!completedArray) {
        completedArray = [NSMutableArray array];
    }
    return completedArray;
}
-(IBAction)changeSettings:(id)sender{
    SettingsViewController *svc = [[SettingsViewController alloc]initWithColor:baseColor];
    [svc setDelegate:self];
    [svc setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
    [self presentViewController:svc animated:YES completion:NULL];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
 cellSubclassCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell"];
    if (!cell)
        cell = [[cellSubclassCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"UITableViewCell"];

    if([indexPath section] == 0){
    cell.textLabel.text = [[[self.taskArray objectAtIndex:[indexPath row]] taskName] uppercaseString];

    cell.imageView.image = [UIImage imageNamed:@"unchecked.png"];
        cell.imageView.highlightedImage = [UIImage imageNamed:@"uncheckedhighlighted.png"];
        [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
        [cell setBackgroundColor:[UIColor colorWithRed:236.0/255 green:240.0/255 blue:241.0/255 alpha:1.0f]];
        cell.textLabel.textColor = baseColor;

        NSString *detailText = [[self.taskArray objectAtIndex:[indexPath row]] timeIntervalString];
        cell.detailTextLabel.text = detailText;
               [[cell detailTextLabel] setFont:[UIFont fontWithName:@"Avenir-Black" size:12]];
        [[cell textLabel] setFont:[UIFont fontWithName:@"AvenirNext-DemiBold" size:16]];
[cell.contentView setAlpha:1];
    } else if ([indexPath section] == 1) {
    cell.textLabel.text = [[[self.completedArray objectAtIndex:[indexPath row]] taskName] uppercaseString];

     cell.imageView.image = [UIImage imageNamed:@"checked.png"];
        [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
        [cell setBackgroundColor:[UIColor colorWithRed:236.0/255 green:240.0/255 blue:241.0/255 alpha:1.0f]];
        cell.textLabel.textColor = baseColor;
        NSString *detailText = [[self.completedArray objectAtIndex:[indexPath row]] timeIntervalString];
        cell.detailTextLabel.text = detailText;
        [[cell detailTextLabel] setFont:[UIFont fontWithName:@"Avenir-Black" size:12]];
        [[cell textLabel] setFont:[UIFont fontWithName:@"AvenirNext-DemiBold" size:16]];
        [cell.contentView setAlpha:0.5];
    }
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handlechecking:)];
    //cell.contentView
    [cell.imageView addGestureRecognizer:tap];
    cell.imageView.userInteractionEnabled = YES;
    return cell;
    }
-(void)handlechecking:(UITapGestureRecognizer *)t{

        CGPoint tapLocation = [t locationInView:self.tableView];
        NSIndexPath *tappedIndexPath = [self.tableView indexPathForRowAtPoint:tapLocation];
        NSIndexPath *newIndexPath = nil;

        if (tappedIndexPath.section == 0) {

            NSUInteger newRowIndex = self.completedArray.count;
            [self.completedArray addObject:[self.taskArray objectAtIndex:tappedIndexPath.row]];
            [self.taskArray removeObject:[self.taskArray objectAtIndex:tappedIndexPath.row]];
            newIndexPath = [NSIndexPath indexPathForRow:newRowIndex inSection:1];

        } else {

            NSUInteger newRowIndex = self.taskArray.count;
            [self.taskArray addObject:[self.completedArray objectAtIndex:tappedIndexPath.row]];
            [self.completedArray removeObject:[self.completedArray objectAtIndex:tappedIndexPath.row]];
            newIndexPath = [NSIndexPath indexPathForRow:newRowIndex inSection:0];
        }
        [self.tableView beginUpdates];
        [self.tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
        [self.tableView deleteRowsAtIndexPaths:@[tappedIndexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
        [self.tableView endUpdates];

}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    NSInteger num = 0;
    if (section == 0) {
        num = self.taskArray.count;
    } else {
        num = self.completedArray.count;
    }
    return num;
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 2;
}
-(void)buttonPressed:(id)sender{
    for(UIView *v in holdViewsArray){
    if(button == sender){
        [button setHighlighted:YES];
    }
    }
}
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    if (completedArray == nil){
        headerView2.hidden = YES;
        [headerView2 setNeedsDisplay];
    } else {
        headerView2.hidden = NO;
        [headerView2 setNeedsDisplay];
    }
    switch (section) {
    case 0:
            return [holdViewsArray objectAtIndex:0];
            break;
    case 1:
            return [holdViewsArray objectAtIndex:1];
            break;

    }
    return 0;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    switch (section) {
        case 0:
            return 60.0;
            break;

        case 1:
            return 43.0;
            break;
    }
    return 0;
}
-(IBAction)addCell:(id)sender{
    Properties2ViewController *pvc = [[Properties2ViewController alloc]init];
    [pvc setDelegate:self];
    [self presentViewController:pvc animated:YES completion:NULL];
    [pvc setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
}
-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [[self tableView] reloadData];
    }
-(void)properties2ViewControllerDidEnterPropertiesSuccesfully:(Tasks *)t{
    if (![[t taskName] isEqual: @""]) {
    [taskArray addObject:t];
    }
    [self.tableView reloadData];
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    Tasks *task = [[Tasks alloc]init];
    if (indexPath.section == 0){
    task.taskName = [[self.taskArray objectAtIndex:[indexPath row]] taskName];
        task.timeInterval = [[self.taskArray objectAtIndex:[indexPath row]] timeInterval];
    task.dateCreated = [[self.taskArray objectAtIndex:[indexPath row]] dateCreated];
    } else if (indexPath.section == 1){
        task.taskName = [[self.completedArray objectAtIndex:[indexPath row]] taskName];
        task.timeInterval = [[self.completedArray objectAtIndex:[indexPath row]] timeInterval];
        task.dateCreated = [[self.completedArray objectAtIndex:[indexPath row]] dateCreated];
    }
   DetailViewController *dvc = [[DetailViewController alloc]init];
    [dvc setTestTask:task];
    [[self navigationController] pushViewController:dvc animated:YES];
}
-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{
    if (sourceIndexPath.section == 0){
         Tasks *taskToMove = [taskArray objectAtIndex:[sourceIndexPath row]];
        if (sourceIndexPath.row > destinationIndexPath.row) {
        [taskArray insertObject:taskToMove atIndex:destinationIndexPath.row];
        [taskArray removeObjectAtIndex:(sourceIndexPath.row + 1)];
        }
        else if (sourceIndexPath.row < destinationIndexPath.row) {
        [taskArray insertObject:taskToMove atIndex:(destinationIndexPath.row + 1)];
        [taskArray removeObjectAtIndex:(sourceIndexPath.row)];
        }
    } else if (sourceIndexPath.section == 1){
        Tasks *completedTaskToMove = [completedArray objectAtIndex:[sourceIndexPath row]];
        if (sourceIndexPath.row > destinationIndexPath.row) {
            [completedArray insertObject:completedTaskToMove atIndex:destinationIndexPath.row];
            [completedArray removeObjectAtIndex:(sourceIndexPath.row + 1)];
        }
        else if (sourceIndexPath.row < destinationIndexPath.row) {
            [completedArray insertObject:completedTaskToMove atIndex:(destinationIndexPath.row + 1)];
            [completedArray removeObjectAtIndex:(sourceIndexPath.row)];
        }
    }
}
-(void)setEditing:(BOOL)editing animated:(BOOL)animated{
    [super setEditing:editing animated:animated];
    if ([self isEditing]){
        for(UIView *v in holdViewsArray){
            button.hidden = YES;
        }
    } else {
        button.hidden = NO;
    }

}
-(void)loadView{
    [super loadView];
}
-(NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath{
    if (proposedDestinationIndexPath.section != sourceIndexPath.section)
    {
        return sourceIndexPath;
    }
    return proposedDestinationIndexPath;
}
-(void)changeBackgroundColor:(UIColor *)c{
    baseColor = c;
    [self.tableView setSeparatorColor:c];
    [self.tableView setBackgroundColor:c];
    button.fillColor = c;
    [button setNeedsDisplay];
}
@end

```

Basically all I need to do is save the objects that are added by the user and also save the time interval specified by the user since I want to add a timer for each object (so that if the application closes, the objects are still there). Do I need a full Core Data implementation to do this? Do I even need Core Data at all? I would really appreciate some guidance since I don't know what to do at this point.

---EDIT---
Another question. Before adding Core Data I had custom delegation to send properties from my modal view controller to my table view controller. With core data do I still need these? I'm thinking that I don't but is there a way to send properties from one view controller to the next with core data?