我有一个部分工作的应用程序,但我需要一些帮助来实现这一目标。我正在尝试编辑单个核心数据对象,而不是具有相同属性的所有对象。这很快就会有意义。
我有一个表视图控制器,导航栏中有一个加号按钮;用户单击它并显示带有4个文本字段的模态视图:名称,事件,日期和金额。用户添加此信息,按保存并将其保存到Core Data数据库。
我有以下型号: 交易 场合(标题属性) 项目(amountType属性) 日期(dateOEvent属性) 人(姓名属性)
交易与场合,物品,日期和人物有关系。
当我保存新条目时,应用程序现在运行良好;没有重复,它运作良好。 tableview控制器设置为使用NSFetchedResultsController在单元格和节中显示Transactions,因此通过使用关系,我可以设置cell.textLabel.text = transaction.whoBy.name
。
在编辑交易时,这里存在轻微但严重的问题。我点击表视图中的一个单元格并通过prepareForSegue,它成功地将我传递给一个新的视图控制器,其中的文本字段已填充了我单击的单元格中的信息。问题来自编辑。
如果我的表视图有3个Jack项和1个条目,其中填写了所有信息,如事件标题,事件日期,金额等。这是有效的,因为在表中的3个单独的单元格看,我看杰克,但每个“杰克”交易有不同的事件,金额和日期。所以:
单元格1(名称 - 事件 - 日期 - 金额): 杰克 - 烧烤 - 今天 - 400
单元格2: 杰克 - 小子 - 七月 - 500
小组3: 杰克 - 新房 - 七月 - 1000
小组4: 玛丽 - 假日 - 十月 - 400
我想要的是点击Cell 1并将JACK更改为JOHN。我现在遇到的问题是,如果我将Jack更改为John,则单元格1,2和3也会变为John,这显然不是我想要的代码。
我的详细信息视图控制器用于编辑具有Transaction *transaction
属性,因此它可以设置从表视图传递的信息,在viewDidLoad
中,我有以下内容,{{1} }只是一个NSString属性:
self.oldName
编辑条目保存方法如下:
- (void)viewDidLoad
{
self.editingNameTextField.text = self.selectedTransaction.whoBy.name;
self.oldName = self.editingNameTextField.text;
[super viewDidLoad];
}
调用方法personWithName:
- (IBAction)save:(id)sender
{
NSManagedObjectContext *context = [self managedObjectContext];
self.selectedTransaction.whoBy.name = self.oldName;
Person *person = [Person personWithName:self.oldName inManagedObjectContext:context];
self.selectedTransaction.whoBy = person;
self.selectedTransaction.whoBy.name = self.editingNameTextField.text;
// Same code for Occasion, removed for brevity
NSError *error = nil;
if (![context save:&error])
{
NSLog(@"Can't save! %@ %@", error, [error localizedDescription]);
}
}
我必须为场合和日期做同样的事情,但我的问题是从Person开始,如何在Table View(所选的Transaction)中编辑SINGLE事务而不是重命名每个名字。我只想编辑从杰克到约翰的Cell 1的名称文本字段,并让其他单元格仍然显示杰克等。
任何帮助都将再次受到大力赞赏!