Core data 在NSManagedObjectContext中保存更改的核心数据问题

Core data 在NSManagedObjectContext中保存更改的核心数据问题,core-data,nsmanagedobject,nsmanagedobjectcontext,Core Data,Nsmanagedobject,Nsmanagedobjectcontext,我在处理核心数据方面遇到问题NSManagedObjectContext 我可以在我的NSManagedObjectContext中创建NSManagedObject,但未能保存该值 以下是我得到的: _lesson.title = _titleField.text; int priority = [_priorityField.text intValue]; int difficulty = [_difficultyField.text intValue]; int time = [_tim

我在处理核心数据方面遇到问题
NSManagedObjectContext

我可以在我的
NSManagedObjectContext
中创建
NSManagedObject
,但未能保存该值

以下是我得到的:

_lesson.title = _titleField.text;

int priority = [_priorityField.text intValue];
int difficulty = [_difficultyField.text intValue];
int time = [_timeField.text intValue];
int sortIndex = 0;
if ( time == 0 )
{
    sortIndex = 101;
}
else
{
    sortIndex = priority * ( difficulty / time );
}
_lesson.priority = [NSNumber numberWithInt:priority];
_lesson.difficulty = [NSNumber numberWithInt:difficulty];
_lesson.time = [NSNumber numberWithInt:time];
_lesson.sortIndex = [NSNumber numberWithInt:sortIndex];
NSError* error = nil;
[[(AppDelegate*)[[UIApplication sharedApplication] delegate] managedObjectContext] save:&error];
保存之前的一切都正常工作,我使用
NSLog
验证每个值是否真的保存在
\u lesson

并且
\u课程
从这里发送:

if ( [[segue identifier] isEqualToString:@"addLesson"] )
{
    LessonViewController* destination = [[LessonViewController alloc]init];
    Lesson* lesson = (Lesson*)[NSEntityDescription insertNewObjectForEntityForName:@"Lesson" inManagedObjectContext:_managedObjectContext];
    destination.lesson = lesson;
}
else if ( [[segue identifier] isEqualToString:@"editLesson"] )
{
    LessonViewController* destination = [[LessonViewController alloc]init];
    NSIndexPath* index = [_tableView indexPathForCell:(UITableViewCell*)sender];
    [_managedObjectContext deleteObject:[_lessonArray objectAtIndex:index.row]];
    Lesson* lesson = (Lesson*)[_lessonArray objectAtIndex:index.row];
    destination.lesson = lesson;
}
调试了两个小时后,我找不到我的错误。请帮忙

我将在下面列出我的完整代码:

这是我的全部源代码。(我复制、粘贴并造成了混乱。所以,Dropbox!)


提前感谢。

这条线看起来可疑:

[_managedObjectContext deleteObject:[_lessonArray objectAtIndex:index.row]];
在将Lesson对象传递给
LessonViewController
之前,请先删除该对象,这样保存上下文将从存储中删除该对象,而不是保存(修改过的)对象,这可能是您所希望的

在我看来,您应该删除代码中的那一行


添加:您的
prepareforsgue
方法中存在错误:您使用

LessonViewController* destination = [[LessonViewController alloc]init];
相反,您必须使用序列的目标视图控制器:

LessonViewController *destination = [segue destinationViewController];

这是以前处理编辑的方法中的一行代码。在删除它之前,我真的很想花一分钟对自己说“哇,你真蠢。”我会删除这句话,然后再试一次。谢谢你读了这么长的代码。在意识到我很愚蠢之后。我想到了另一个问题。数据没有被编辑,所以该行现在不会真正执行,因为我还没有真正尝试编辑任何内容。但是你是对的,那一行应该被删除。@ShaneHsu:添加课程后,是否在ProjectViewController中重新加载表视图?否则,您将无法在表视图中看到新对象。保存部分。我可以使用
insertNewObjectForEntityForName
将课程添加到上下文中,并将该课程传递到我的编辑视图。但是,当我保存编辑内容并希望返回到表视图时,所有数据都消失了。它们仍然是空白的。记录在那里,但它是空的。我会把我的源代码放在Dropbox上。@ShaneHsu:好的,我可以看一下。我的“重新加载”问题呢?