我正在为我的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
谢谢你,
三通
答案 0 :(得分:3)
要获得独特的结果,您通常会使用
fetchRequest.propertiesToFetch = [NSArray arrayWithObject:@"<#propertyName#>"];
fetchRequest.returnsDistinctResults = YES;
fetchRequest.resultType = NSDictionaryResultType;
但除非我在这里遗漏了一些东西,否则你可能不应该这样做。为什么不首先将fetchRequest设置为获取状态实体?然后使用state.stores关系(希望你已经建模为store.state的反转)来获取第二个'layer'tableView的数据。