NSPredicate - возвращает когда-либо уникальный экземпляр в столбце - PullRequest
0 голосов
/ 19 августа 2010

Мне было интересно, существует ли предикат, возвращающий каждый уникальный экземпляр в столбце.

Ответы [ 3 ]

0 голосов
/ 20 августа 2010

Вы можете настроить NSFetchRequest на возврат уникальных сообщений для вас.Взгляните на его документацию.

0 голосов
/ 26 августа 2010

Ниже приведен код, используемый для решения проблемы.

- (NSMutableArray *)fetchNeighborhoods {

    ProjectNameAppDelegate *appDelegate = (ProjectNameAppDelegate *)[[UIApplication sharedApplication] delegate];
    NSManagedObjectContext *managedObjectContext = appDelegate.managedObjectContext;    
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Bar" inManagedObjectContext:managedObjectContext];

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"neighborhood" ascending:YES];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    [fetchRequest setSortDescriptors:sortDescriptors];
    [fetchRequest setEntity:entity];

    // Get array of results.
    NSMutableArray *theResults = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
    // Grab unique neighborhoods through NSSet.
    NSSet *uniqueElements = [NSSet setWithArray:[theResults valueForKey:@"neighborhood"]];
    // Dump NSSet uniques into new array.
    NSMutableArray *sortedResults = [[NSMutableArray alloc] initWithArray:[uniqueElements allObjects]]; 
    // Sort the results alphabetically.
    sortedResults = [[sortedResults sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)] mutableCopy];
    // Output unique results for verification.   
    for(int i = 0; i < [sortedResults count];i++){
        NSLog(@"%d. %@", i+1, [sortedResults objectAtIndex:i]); 
    }

    [sortDescriptor release];
    [sortDescriptors release];

    return sortedResults;
}
0 голосов
/ 20 августа 2010

@distinctUnionOfArrays может работать в зависимости от вашей ситуации: Основные данные - получение уникальных строк

...