1

次の方法を使用してデータを保存します

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

そして、フェッチメソッドから 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 に答える