1

我使用以下方法存储数据

- (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 与字符串匹配的位置来简单地删除对象?

4

1 回答 1

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];
}
于 2012-04-14T21:44:18.877 回答