gpt4 book ai didi

cocoa - 在插入时开始编辑

转载 作者:行者123 更新时间:2023-12-03 16:44:33 24 4
gpt4 key购买 nike

我有一个使用 Core Data 的基于文档的应用程序,并且有一个使用绑定(bind)和 IB 中的 NSArrayController 填充的 tableView。一切正常,但我想确保第一列在向数组添加新对象时立即处于编辑模式。我四处寻找合适的代码,并从 Hillegass 书中改编了一些代码。编辑工作正常,但行选择似乎不起作用。它停留在第 0 行,并且在编辑后按 Tab 键切换时,要编辑的下一列位于该行上。这是我使用过的代码的一个版本。我已经在谷歌上搜索了我的问题的解决方案,但在没有核心数据或绑定(bind)或非文档应用程序的情况下不断获得结果。我在这里遗漏了什么吗?

-(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];

}

这是固定的(并且大大简化的)版本

-(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];

}

最佳答案

首先,您不需要强制转换对象的插入。 -insertNewObjectForEntityForName: inManagedObjectContext: 返回 id,因此转换是多余的。

您不需要仅仅为了获取数组而获取对象。您可以在 NSArrayController 中查询您添加的新对象,如果不存在,请添加它(抱歉,自从我使用 NSArrayController 以来已经有一段时间了,不记得是否有它需要运行循环的一个周期来检测变化)。

从那里你可以向NSArrayController询问索引并继续。

关于cocoa - 在插入时开始编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4867365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com