2010-06-04 3 views
2

많은 엔티티가 특정 NSEntityDescription의 고유 인스턴스 여야하는 코어 데이터 저장소가 있습니다. 나는 현재, 주어진 설명 새로운 개체를 만들어이하고 있어요 다음이 :주어진 NSManagedObject를 제외하는 NSPredicate 구문

작동하지만, 나는 그것을 할 수 있어야 것처럼 반복 처리보다는 자 NSPredicate로 = 느낌
-(void)clearMyManagedObjectsExceptFor:(NSManagedObject*)except { 

    NSArray *managedObjects = [ self fetchMyManagedObjectsWithPredicateOrNil: nil ]; 
    // returns all managed objects for a given NSEntityDescription 

    NSManagedObject *managedObject; 
    for(NSUInteger i = 0; i < [ managedObjects count ]; i++){ 
     managedObject = [ managedObjects objectAtIndex: i ]; 
     if(![ managedObject isEqual: except ]){ 
      [ managedObjectContext deleteObject: managedObject ]; 
     } 
    } 
} 

! ,하지만 난 단지 그것을 수행 할 올바른 술어 구문을 이해할 수 없습니다. 누구나 나를 계몽시킬 수 있습니까?

답변

6

당신은 같은 것을 할 수있는 :

- (void) clearObjectsExceptFor:(NSManagedObject *)exception { 
    NSPredicate * allExcept = [NSPredicate predicateWithFormat:@"SELF != %@", exception]; 
    NSArray * objects = [self fetchMyManagedObjectsWithPredicateOrNil:allExcept]; 
    for (NSManagedObject * object in objects) { 
    [managedObjectContext deleteObject:object]; 
    } 
} 
+1

저기요을 나는 것을 시도 거라고 맹세 할 수 있지만, 난 그냥 다시했고, 그것이 *의 마른 세수를했다. 감사! –

+0

나는 또한이 버그를 만났습니다 - 장치에 잘못된 결과가 표시되었지만 장치에는 문제가 없습니다. – Shmidt