删除NSManagedObject如何?键值匹配可能吗?

时间:2012-04-14 21:40:31

标签: iphone objective-c ios5

我使用以下方法存储数据

- (NSManagedObject *) createCourseWithCourseCode:(NSString *) courseCode {
     NSManagedObject *course = [NSEntityDescription insertNewObjectForEntityForName:@"Course"   inManagedObjectContext:context];
    [course setValue:courseCode forKey:@"CourseCode"];
    [self saveChanges];
    return course;
}

然后我尝试使用此代码删除,我从fetch方法获取NSManagedObject,但这不起作用。 'NSManagedObjectContext无法删除其他上下文中的对象。'

- (void) removeCourseWithCourseCode:(NSManagedObject *) courseCode {
    [context deleteObject:courseCode];
    [self saveChanges];
}

我想知道我是否可以通过查找关键CourseCode匹配字符串的位置来删除对象?

1 个答案:

答案 0 :(得分:1)

您可以通过传递对象的objectID而不是实际对象来完成此操作。

您的代码如下所示:

- (void) removeCourseWithCourseCode:(NSManagedObjectID *) courseCode {
    [context deleteObject:[context existingObjectWithID:courseCode] error:nil];
    [self saveChanges];
}

您可以像这样访问NSManagedObject的ID:

[someObject objectID];

所以你的第一个代码块应该是这样的:

- (NSManagedObjectID *) createCourseWithCourseCode:(NSString *) courseCode {
     NSManagedObject *course = [NSEntityDescription insertNewObjectForEntityForName:@"Course"   inManagedObjectContext:context];
    [course setValue:courseCode forKey:@"CourseCode"];
    [self saveChanges];
    return [course objectID];
}