2012-09-27 2 views
0

내 앱에 이상한 문제가 있습니다.NSFetchedResultsController가 배경을 입력 한 후 행을 잃습니다.

나는 NSFetchedResultsController을 배치하여 배열을 채 웁니다.

이 그것은 물론

- (NSFetchedResultsController *)fetchedContactsController { 
    if (self->fetchedContactsController != nil) return self->fetchedContactsController; 

    // Create the fetch request 
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 

    // I want every contact... 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:self->managedObjectContext]; 
    [fetchRequest setEntity:entity]; 

    // ... whose are not associated with my order item 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (%@ IN items)", self.orderItem]; 
    [fetchRequest setPredicate:predicate]; 

    // Edit the section name key path and cache name if appropriate 
    self.fetchedContactsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self->managedObjectContext sectionNameKeyPath:nil cacheName:nil]; 

    [aFetchedResultsController release]; 
    [firstnameSortDescriptor release]; 
    [lastnameSortDescriptor release]; 
    [sortDescriptors release]; 
    [fetchRequest release]; 

    // Execute the fetch request 
    [self->fetchedContactsController performFetch:nil]; 
    return self->fetchedContactsController; 
} 

(A @propoerty (nonatomic, retain) 등) 이런 식으로 선언 된 것, contacts.items이 있습니다.

내 애플 내 배열 사라의 다른

NSLog(@"before >>> %d", [[fetchedContactsController fetchedObjects]count]); // >>> 3 
[self->fetchedContactsController performFetch:nil]; 
[tableView reloadData]; 
NSLog(@"after >>> %d", [[fetchedContactsController fetchedObjects]count]); // >>> 0 

모든 라인을한다면 배경 다음, 다시 전경 갈 때!

편집 :

내가 언급하면이 라인 :

// ... whose are not associated with my order item 
    //NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (%@ IN items)", self.orderItem]; 
    //[fetchRequest setPredicate:predicate]; 

문제는 더 이상 발생하지 않습니다! 하지만 그건 내가 원하는 것이 아니에요 ...

답변

0

좋아, 찾았 어. 사실 당신이 질문을 해결할 수있는 길을 만들 수 있습니다에게 어떻게 재미

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT SELF IN %@", self.orderItem.recipients]; 

에 의해

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (%@ IN items)", self.orderItem]; 

: Thanks to this question, 나는이 줄을 교체했다.

관련 문제