Цель C - NSFetchRequest с уникальной категорией - PullRequest
1 голос
/ 20 октября 2011

Я использую базовые данные для своего приложения для iPhone.
Первоначально у меня есть UITableViewController, который просто перечисляет все «Магазины».

Однако теперь мы поняли, что список становится слишком длинным, и хотели бы разбить его на 2 слоя UITableViewController. Первый - «Штаты», а второй - магазины в выбранном штате.

Я понял, как захватить все магазины в определенном штате

[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"state.abbreviation == 'AA'"]];

Как я могу использовать NSFetchRequest, просто чтобы получить список состояний? Может быть, что-то вроде этого заявления SQL? Возможно ли это?

SELECT DISTINCT abbreviation FROM Stores;

Ниже моя модель (упрощенно)

Store.h

@class State;

@interface Store : ManagedAppObject {
@private
}
@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) State * state;

@end

State.h

@interface State : ManagedAppObject {
@private
}
@property (nonatomic, retain) NSString * abbreviation;
@property (nonatomic, retain) NSString * name;

@end

Спасибо,
Тройник

1 Ответ

3 голосов
/ 09 ноября 2011

Для получения уникальных результатов вы обычно используете

fetchRequest.propertiesToFetch = [NSArray arrayWithObject:@"<#propertyName#>"];
fetchRequest.returnsDistinctResults = YES;
fetchRequest.resultType = NSDictionaryResultType;

Но если я что-то здесь упустил, то, вероятно, это не то, что вам следует делать. Почему бы вам просто не установить свой fetchRequest для выборки сущностей State в первую очередь? Затем используйте отношение state.stores (которое, как мы надеемся, вы смоделировали как обратное к store.state), чтобы получить данные для вашего второго tableView «layer».

...