0

하나의 속성이있는 하나의 엔터티가 포함 된 간단한 XCDataModel이 있습니다. 본질적으로, 나는 일련의 날짜를 저장하고있다.핵심 데이터 삭제 실패 * 쉬운 수정? *

는 지금, 나는 내가 그렇게 같은 결과를 통해를 추가 한 후 요청을 가져오고 실행하는 실행 때문에 제대로 NSDates를 추가하고 알고 :

for (NSManagedObject *info in fetchedObjects) { 
    NSLog(@"Name: %@", [info valueForKey:@"attribute"]); 
} 

그리고 모든 추가있는 NSDate를 차지한다. 로그에서 예 : 내가 코어 데이터에서 개체를 삭제하려고하면

2012-06-19 12:40:38.531 Arts Days[47194:16103] Name: 2013-03-27 04:00:00 +0000 
2012-06-19 12:40:38.531 Arts Days[47194:16103] Name: 2013-03-01 05:00:00 +0000 
2012-06-19 12:40:38.532 Arts Days[47194:16103] Name: 2013-01-01 05:00:00 +0000 

이제, 그것은 (같은 인출 실행하고 다시 결과를 통해 실행하여) 실패 증명한다. 또한

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Entity" inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entity]; 

[fetchRequest setFetchBatchSize:366]; 

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO]; 
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil]; 

NSError *error = nil; 

[fetchRequest setSortDescriptors:sortDescriptors]; 

NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; 

for (NSManagedObject *object in fetchedObjects) { 
    if ([[object valueForKey:@"date"] isEqualToDate:date]) { 
     [managedObjectContext deleteObject:object]; 
    } 
} 
if (![managedObjectContext save:&error]) { 
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
} 

, 해결되지 않은 오류가있는 NSLog가 전무 전무 포함 ...

당신이 내가 잘못하고있는 중이 야 뭔지 알아 : 여기

은 페치?

+0

이것이 모두 당신의 코드라면, fetchRequest와 fetchObjects가 비어있는 (실제로는 nil) fetchRequest로 실제로 가져 오지는 않을 것입니다. – gschandler

+0

나는 그 라인을 우연히 떠났다. – achi

+0

코드를 디버깅 해 봤어? 예상대로 실행 중입니까? – Dima

답변

1

두 개의 서로 다른 NSManageObjectContext 인스턴스가 사용 된 것으로 보입니다. self.managedObjectContext (ivar)을 사용하여 가져 오기 요청을 설정하고 가져 오기를 수행하지만 deleteObject:save: 작업을 수행 할 로컬 인스턴스. 로컬 인스턴스 managedObjectContext은 아마 nil이고 ivar과 동일한 객체를 참조하지 않습니다.

관련 문제