2013-07-23 67 views
0

目前在一个给定的方法对一个类中的一个实例变量我可以创建核心数据和神奇记录与以下行创建使用核心数据和神奇记录

AViewController.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]; 
} 
+0

这不是'本地'变量,它是一个'实例'变量或'ivar'。另外,为什么你需要一个变量为你的'NSManagedObject'子类'List'? – Malloc

回答

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被称为创建。

+0

恰到好处。感谢提示 – Apollo

+0

@Auser:np。很高兴这是你正在寻找的。 :) – Rakesh

0

这种模式是很常见的,你发布的代码应该工作。

我不完全知道MR是如何工作的,但是在Cord Data中,如果要放弃它,必须从上下文中删除该对象,否则它将与下一次保存一起保存。