使用核心数据实例化自定义对象

时间:2013-07-23 04:13:39

标签: iphone ios objective-c core-data magicalrecord

目前,每当我想要保存名为List的自定义对象时,我都会使用

(核心日期+ Magical Record

List *list = [List MR_createInContext:_managedObjectContext];

现在我想知道我是否可以实例化像这样的List项目

List *localList = [[List alloc] init];
// set some properties
localList.name = @"foobar";

List *newList = [List MR_createInContext:_managedObjectContext];
newList = locaList

这会导致Core Data /内存问题出现任何问题吗?

2 个答案:

答案 0 :(得分:2)

不,原因有两个:

  1. 您无法将init与托管对象一起使用。指定的初始值设定项为initWithEntity:insertIntoManagedObjectContext:NSEntityDescription上还有一个称为insertNewObjectForEntityForName:inManagedObjectContext:的便利构造函数。如果你不使用其中之一,你就会遇到问题。

  2. 分配newList = localList时,会丢弃localList中包含所有数据的上一个对象。此点之后剩下的就是您最初分配给newList的那个。例如,您对localList.name的作业会随localList对象消失。

答案 1 :(得分:-2)

由于您已定义List,因此很难说您是否在两种情况下都正确创建了List实例。至少你的代码泄漏了你创建的第二个List,而且这个代码似乎不太可能完成你认为的那样。

您的代码相当于:

List *localList = [[List alloc] init];
// set some properties
localList.name = @"foobar";

List *newList = localList;