2012-04-14 49 views
1

我存儲數據使用下面的方法刪除NSManagedObject如何?鍵值匹配可能嗎?

- (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匹配字符串的位置來簡單地刪除對象?

+0

您確定您在[context deleteObject:courseCode] i中使用的上下文s是你插入對象的上下文的同一個實例嗎? – tronbabylove 2012-04-14 21:47:45

+0

是的,謝謝,它的相同我之前檢查了這個 – 2012-04-14 22:38:54

回答

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]; 
} 
+0

謝謝,但現在我得到「沒有可見@interface NSManagedObjectContext聲明existingObjectWithID」 – 2012-04-14 22:24:22

+0

什麼行代碼是錯誤? – edc1591 2012-04-14 22:25:07

+0

[context deleteObject:[context existingObjectWithID:courseCode]]; – 2012-04-14 22:25:38