根据用户初始uitableview输入对数据进行分组

时间:2013-07-06 22:33:41

标签: ios core-data

我正在研究用什么方法将用户初始输入与以下选定的行相关联。

目前我正在点击coredata实体时添加excercises,如下所示:

enter image description here

我想要实现的是将练习添加到之前的uitableview中命名的例程中。这涉及用户命名例程组(核心数据实体中的“例程名称”),例如添加到初始核心数据实体的“4天锻炼”。以下练习将添加到实体详细信息中,并具有基于例程组的关系。

enter image description here

我已经在核心数据模型中创建了一对多关系:

enter image description here

我将它添加到当前使用的实体:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIAlertView *messageAlert = [[UIAlertView alloc]
                                 initWithTitle:@"Row Selected" message:@"Added to Routine!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    NSManagedObjectContext *context = [self managedObjectContext];

    // Create a new device
    ExcerciseInfo *info = [_fetchedResultsController objectAtIndexPath:indexPath];
        NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"Routines" inManagedObjectContext:context];
    [newDevice setValue: info.name  forKey:@"routinename"];

    NSManagedObject *newDevice1 = [NSEntityDescription insertNewObjectForEntityForName:@"RoutinesDetails" inManagedObjectContext:context];
    [newDevice1 setValue: info.name  forKey:@"name"];

    NSError *error = nil;

    // Save the object to persistent store
    if (![context save:&error]) {
        NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
    }

    // Display Alert Message
    [messageAlert show];

    //Update with checkmark
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}

基本上我正在研究我应该采用什么方法来实现这一点以及有关代码的任何建议。

我的routineDetailViewController在'button'上有以下内容

- (IBAction)SaveButton:(id)sender {
    NSManagedObjectContext *context = [self managedObjectContext];
    NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"Routines" inManagedObjectContext:context];
    [newDevice setValue:self.nameTextField.text forKey:@"routinename"];

}

目前他们正在为核心数据添加正常数据,但我无法对其进行分组。

谢谢。

2 个答案:

答案 0 :(得分:0)

使用这些方法通过“部分”在表格视图中进行分组:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)documentTableView
      //return number of routines

- (NSInteger)tableView:(UITableView *)documentTableView numberOfRowsInSection:(NSInteger)section
      //return number of routine details for this routine

- (NSString *)tableView:(UITableView *)documentTableView titleForHeaderInSection:(NSInteger)section
      //return name of this routine

你必须考虑如何处理“取消”。当你选择表格单元格时,不是在插入行。你打算做“回滚”吗?或者,您可以跟踪另一个数组中的选定行,并在点击“保存”时执行所有数据库工作。

最后,您的messageAlert已分配但已发布。它泄漏了。

答案 1 :(得分:0)

使用Sensible TableView框架时,您还应该能够自动对对象进行分组。检查出来,应该节省大量的时间。