2011-03-02 43 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,你不能編輯對象通常是沒用的,所以你需要做的是反正遲早。