Objective C - NSFetchRequest,类别唯一

时间:2011-10-19 23:47:32

标签: objective-c core-data nsfetchrequest

我正在为我的iPhone应用程序使用Core Data 最初我有一个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 个答案:

答案 0 :(得分:3)

要获得独特的结果,您通常会使用

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

但除非我在这里遗漏了一些东西,否则你可能不应该这样做。为什么不首先将fetchRequest设置为获取状态实体?然后使用state.stores关系(希望你已经建模为store.state的反转)来获取第二个'layer'tableView的数据。