编辑单核心数据条目而不是具有相同属性的所有条目

时间:2013-11-29 11:30:20

标签: ios objective-c core-data uitableview editing

我有一个部分工作的应用程序,但我需要一些帮助来实现这一目标。我正在尝试编辑单个核心数据对象,而不是具有相同属性的所有对象。这很快就会有意义。

我有一个表视图控制器,导航栏中有一个加号按钮;用户单击它并显示带有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的名称文本字段,并让其他单元格仍然显示杰克等。

任何帮助都将再次受到大力赞赏!

0 个答案:

没有答案