Ios7 使用MagicalRecord更新CoreData记录会创建额外的空记录

Ios7 使用MagicalRecord更新CoreData记录会创建额外的空记录,ios7,magicalrecord,Ios7,Magicalrecord,我有一个iPad应用程序,它使用MagicalRecord管理我的CoreData存储。当我更新记录时,除了更新记录外,我还得到一个空记录 更新:这是有关实体的图像: 和ClientInfo的: 这是空记录的图像: 这是创建更新的代码: if(updateFlag == NO) // record has been pre-loaded to enable update ai.aApptKey = selectedClientKey; // new key ai.aSta

我有一个iPad应用程序,它使用MagicalRecord管理我的CoreData存储。当我更新记录时,除了更新记录外,我还得到一个空记录

更新:这是有关实体的图像:

和ClientInfo的:

这是空记录的图像:

这是创建更新的代码:

if(updateFlag == NO)  //  record has been pre-loaded to enable update
    ai.aApptKey = selectedClientKey;  //  new key

ai.aStartTime = selectedStartDate;
ai.aEndTime= selectedEndDate;
ai.aServiceTech = boStaff.text;
ai.aServices = soServices.text;
ai.aNotes = soNotes.text;
ai.aImage = UIImageJPEGRepresentation(oApptImage.image, 1.0);
ai.aPosX = [NSNumber numberWithFloat: x];  //  indicates column start
ai.aPosY = [NSNumber numberWithFloat: fOffsetFromShopOpens + (iNumberOfSegments*2)];  //  appointment start slot in points.y
ai.aPosW = [NSNumber numberWithFloat: 214.0];
ai.aPosH = [NSNumber numberWithFloat: (intEndTime - intStartTime)];  //  appointment height in grid units (25 per each 15 minutes)

//    [localContext MR_saveToPersistentStoreWithCompletion:nil];  //  store it...
[localContext MR_saveToPersistentStoreAndWait];  //  store it...

我使用MR_savetopersistentstore完成,并决定更改为MR_savetopersistentstore并等待,我得到了相同的结果。我担心的是我的一个用户的设备空间不够用。有什么想法吗?

很可能,您正在同一上下文中创建一个空对象。它显示在数据库中,因为当您调用save时它就在那里。查找对mr_createEntity或mr_createInContext:的调用,并查看实际创建的内容。您还可以在代码中中断该保存点,并在lldb中运行以下操作:

po [context insertedObjects]

看看结果集。如果其中一个对象不是您所期望的,那么您很可能在某个地方预先创建了一个空白对象

你好,索尔。。。不,没有对MR_create方法的调用;当我打电话给瑟夫先生时。。。但是,我确实发现我在几个地方创建了一个新的上下文,并将其删除(我在AppDelegate.h中定义了一个localContext。我尝试使用[NSManagedObjectContext MR_setDefaultContext:localContext];,但出现了一个错误,说明没有已知的类方法(我甚至导入了.h文件)…还有其他建议吗?您首先是如何插入对象的?MagicalRecord方法与这些方法之一相同。您是否使用其他创建/插入方法?寻找默认的核心数据方法。底线是MagicalRecord无法知道您的对象是什么,也不会为您创建任何数据。重复数据意味着您有e正在代码中的某个位置创建重复的对象。要查找的默认对象插入方法是+(id)insertNewObjectForEntityForName:(NSString*)托管对象上下文中的entityName:(NSManagedObjectContext*)NSEntityDescription上的上下文。索尔:我不以编程方式插入对象;我使用XCode 5。但是,我想知道这些关系是否与此有关。当我第一次构建实体时,我认为我可能需要它们,但我从未使用过它们;所以,我正在考虑删除它们,看看会发生什么。你的想法?听起来仍然很奇怪例如,您要在某处创建一个具有零值的对象。insertNewObjectForEntityForName方法和MR_createInContext方法执行完全相同的操作,即将数据插入存储区。创建数据时总是使用这些方法之一。场景中的下一个逻辑步骤意味着您要创建零值在某个地方,但还没有找到位置。你永远不应该返回并删除nils。任何一个框架的任何部分都不会为你创建数据。你可能会遇到的问题是,你的新记录具有必需的关系,因此会在你不知情的情况下自动创建一个实体来填充该位置。这很有趣……让我用有关实体。。。