2011-03-02 53 views
0

道歉不接受以前的答案。我不知道如何接受他们。找不到问题

现在我的问题是不是一个而是两个,其中如下:

应用要求:员工的输入方式并点击保存按钮。应在表格视图中添加员工的姓名。单击一行,细节应该显示在详细视图中。

问题1:单击保存按钮,第一次后,它会显示在表视图,但是从下一个点击,它才会显示,除非应用程序被重新启动。我的代码如下:

(void)saveDetails{ 
    EmployeeDetailsAppDelegate *appDelegate = (EmployeeDetailsAppDelegate *) [[UIApplication sharedApplication] delegate]; 
    NSManagedObjectContext *context = [appDelegate managedObjectContext]; 
    NSManagedObject *newDetails; 
    newDetails = [NSEntityDescription insertNewObjectForEntityForName:@"Details" inManagedObjectContext:context]; 
    [newDetails setValue:empID.text forKey:@"EmployeeID"]; 
    [newDetails setValue:empName.text forKey:@"EmployeeName"]; 
    [newDetails setValue:empDepartment.text forKey:@"EmployeeDepartment"];  
    empID.text = @""; 
    empName.text = @""; 
    empDepartment.text = @""; 
    [[appDelegate rootViewController]addNewObject:empName.text]; 
    NSError *error; 
    [context save:&error]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 

问题2:这基本上不是一个问题,而是一个查询。在点击表格视图中的一行时,员工部门将显示在详细视图中。现在我想显示员工ID。我该怎么做?我给雇员部门显示的代码是:

(void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if([self.array count]){ 
    dictionary = [self.array objectAtIndex:indexPath.row] ; 
    if([dictionary objectForKey:@"EmployeeDepartment"]){    
     [dictionary objectForKey:@"EmployeeDepartment"]; 
     NSString *empDep = [dictionary objectForKey:@"EmployeeDepartment"]; 
     NSLog(@"Dep is %@",empDep); 
    } 
    } 
    detailViewController.detailItem = [NSString stringWithFormat:@"Employee Department: %@",[dictionary objectForKey:@"EmployeeDepartment"]]; 
    self.navigationItem.leftBarButtonItem.enabled = YES; 
} 

问候, Dipanjan

PS:这是为iPad与用作存储核心数据。

回答

1

当您使用核心数据与UITableView时,您应该使用NSFetchedResultsController及其delegate方法。

如果我明白你的第一个问题,正确这应该解决这个问题。它可以解决很多很多更多的问题,你会用它试图反映核心数据对象的数据数组以后有。我说试试,因为它显然不起作用。

简而言之,NSFetchedResultsController“监视”你想在你的tableview中显示的核心数据对象,并且如果一个对象被改变,它会告诉你的委托,它将采取适当的行动(如插入或删除行)。该文档具有您必须实施的委托方法的完整示例代码。

关于第二个问题:更改DetailViewController所以它能够处理NSManagedObject。一个的DetailView,你不能编辑对象通常是没用的,所以你需要做的是反正迟早。