我使用以下方法存储数据
- (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匹配字符串的位置来删除对象?
答案 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];
}