0

目前在给定类中的给定方法中,我可以使用以下行创建由 Core Data 和 Magical Record 管理的自定义变量的实例

视图控制器.m

List *list = [List MR_createInContext:_managedObjectContext];

然后我可以像这样设置列表的属性:

list.name = @"FooBar Name";

我的问题:在AViewController.h我可以执行以下操作 -

@interface AViewController : UIViewController {
    /* Define Local List Var for AViewController class */
    List *list;
}

然后在.m

viewdidload {
list = [List MR_createInContext:_managedObjectContext];
}

someCustomMethod {
  list.name = @"FooBar Name";

  [_managedObjectContext MR_save];
}
4

2 回答 2

1

您的代码应该可以工作。但是,如果您尝试从输入元素创建新对象(可能在单击按钮时),则只能通过一次又一次地运行应用程序来创建新对象。我的意思是,如果你someCustomMethod一次又一次地被调用,同一个对象将被这些值重写。(如果这是你想要的,那很好。)

但是如果你想创建新对象,你应该在对象内部再次初始化它。即你应该使用下面的代码:

viewdidload {
list = [List MR_createInContext:_managedObjectContext];
}

someCustomMethod {
  list.name = @"FooBar Name";

  [_managedObjectContext MR_save];

  list = [List MR_createInContext:_managedObjectContext]; //add this line

}

所以这种方式将保存旧对象并在每次someCustomMethod调用时创建新对象。

于 2013-07-23T07:07:43.660 回答
0

这种模式很常见,您发布的代码应该可以工作。

我不完全知道 MR 是如何工作的,但是在 Cord Data 中,如果你想丢弃它,你必须从上下文中删除它,否则它将在下次保存时保存。

于 2013-07-23T05:42:29.137 回答