【问题标题】:Core Data not Persisting核心数据不持久
【发布时间】:2013-07-24 22:24:28
【问题描述】:

我在使用 Core Data 时遇到问题。我有一个表格视图viewcontroller1,它是从一个填充了我的核心数据模型中的数据的数组中填充的。当一个单元格被选中时,它会推送到viewcontroller2,您可以在其中查看保存的数据。从那里,我有一个名为“编辑”的按钮,当它被选中时,会在viewcontroller3 上进行模态搜索,您可以在其中编辑该数据。这是我保存编辑数据的代码。

//editModel

[self.editModel setValue:self.editNameTextField.text forKey:@"name"];
[self.editModel setValue:self.editTextView.text forKey:@"text"];
[self.editModel setValue:[NSDate date] forKey:@"date"];

NSError *error;
if (![[self.delegate managedObjectContext] save:&error])
{
    NSLog(@"Can't save the edit: %@", [error localizedDescription]);
}

if (self.delegate)
    [self.delegate dismissEdit:self];
else
    NSLog(@"There is no delegate");

但是,每当我尝试调用它时,我都会收到一个 NSLog:Can't save the edit: (null)

viewcontroller2反映了变化; viewcontroller1 中的表格视图也是如此。但是,当我退出 iOS 模拟器并再次运行它时,我只能获得编辑过程之前的数据。帮忙?

【问题讨论】:

  • 委托是否返回托管对象上下文?
  • @Wain - 是的。
  • 检查过?试试[self.editModel.managedObjectContext save:&error]
  • @Wain - 就是这样。谢谢!

标签: ios core-data nsmanagedobjectcontext


【解决方案1】:

delegate 很可能没有提供托管对象上下文。不是从delegate 获取它,而是每个托管对象都有一个指向托管对象上下文的链接,您可以这样做:

[self.editModel.managedObjectContext save:&error]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多