2012-05-14 3 views

답변

2

미리 데이터

if (managedObjectContext == nil) 
{ 
    managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; 
    NSLog(@"After managedObjectContext: %@", managedObjectContext); 
} 

NSError *error; 

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Reserve" inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entity]; 


// NSSortDescriptor tells defines how to sort the fetched results 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"number" ascending:YES]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
[fetchRequest setSortDescriptors:sortDescriptors]; 
NSLog(@"sort count%d",[sortDescriptors count]); 


fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"]; 


NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(number = %d)", [sender tag]]; 

// [fetchRequest setPredicate:predicate]; 
[fetchedResultsController.fetchRequest setPredicate:predicate]; 
self.fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];  
NSLog(@"Count of array::::%d",[fetchedObjects count]); 
NSManagedObject *device = [fetchedObjects lastObject]; 
NSLog(@"device::::%@",device); 

[managedObjectContext deleteObject:device]; 

NSLog(@"device::::%@",[fetchedObjects lastObject]); 

확실히 삭제할 수 database.how로부터 데이터를 삭제 object.can't 장치에 데이터를 도시 이전 결과 집합 (fetchedObjects)의 끝에서 자동으로 사라집니다. 가져 오는 배열에는 가져온 시점의 모든 객체가 포함됩니다. 자동으로 업데이트되지는 않습니다.

컨텍스트에서 개체를 삭제 한 후에 다시 가져 오기를 시도한 다음 장치가 여전히 결과 집합에 나타나는지 확인 했습니까? 또한 실제로 개체를 삭제하지 않으려면 save 컨텍스트도 좋습니다.

원하는 경우 NSFetchedResultsController에 대리자를 추가 할 수 있습니다. 그러면 결과 집합이 변경 될 때마다 코드가 다시 호출됩니다. 그런 다음 알림을 큐로 사용하여 배열을 다시로드 할 수 있습니다.

+0

감사 ... 작동합니다. –

관련 문제