我已經有一個基於文檔的應用程序使用核心數據,並有一個tableView使用IB中的綁定和NSArrayController填充。一切工作正常,但我想確保第一列將立即在編輯模式下添加一個新的對象到數組。 我四處尋找合適的代碼並修改了一些Hillegass書。編輯工作正常,但行選擇似乎沒有工作。它停留在第0行,並且在編輯要編輯的下一列之後的Tab鍵位於該行上。這是我用過的代碼的一個版本。我已經搜索了我的問題的解決方案,但不斷收到沒有核心數據或綁定或非文檔應用程序的結果。 我在這裏錯過了什麼嗎?開始編輯插入
-(IBAction)addEmployee:(id)sender {
Employee *newEmployee = (Employee *)[NSEntityDescription insertNewObjectForEntityForName:@"Employee" inManagedObjectContext:[self managedObjectContext]];
//Fetch the update Employees
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *employeeEntity = [NSEntityDescription entityForName:@"Employee" inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:employeeEntity];
NSArray *fetchResults = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];
[fetchRequest release];
NSError *error = nil;
if (fetchResults == nil) {
// Something here to handle the error.
NSLog(@"The fetch results is null");
}
int row = [fetchResults indexOfObjectIdenticalTo:newEmployee];
NSLog(@"row is %d",row);
[[tableView window] endEditingFor:nil];
[tableView editColumn:1 row:row withEvent:nil select:YES];
}
這裏是固定的(並且大大simpified)版本
-(IBAction)addEmployee:(id)sender {
Employee *newEmployee = [newEmployeeController newObject];
[newEmployeeController addObject:newEmployee];
[newEmployeeController rearrangeObjects];
NSArray *fetchResults = [newEmployeeController arrangedObjects];
int row = [fetchResults indexOfObjectIdenticalTo:newEmployee];
[[tableView window] endEditingFor:nil];
[tableView editColumn:1 row:row withEvent:nil select:YES];
[newEmployee release];
}
排序。現在我回過頭來,嚴肅地想知道我在想什麼...... – BillySangster 2011-02-01 22:24:57
關於你的固定版本:你過早釋放newEmployee,然後在調用`indexOfObjectIdenticalTo:`時使用它。使用autorelease,或者稍後再發布。 – 2011-09-08 18:16:35