はい、最も良い方法は、都市のための別の属性を持つことです。また、独自のエンティティを構造化する必要はありません。フェッチ要求で一意のソートとフェッチを行うことができます。
NSFetchRequest *request=[[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"<your entity name>" inManagedObjectContext:context]];
[request setResultType:NSDictionaryResultType];
[request setPropertiesToFetch:[NSArray arrayWithObject:@"City"]];
request.sortDescriptors=[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"City" ascending:YES]];
[request setReturnsDistinctResults:YES];
メモ:この要求は、Cityをキーとする辞書の配列を返します。フェッチを実行した後にNSFetchRequestを解放することを忘れないでください。
EDIT
ユーザーが都市をクリックすると、いくつかの変数(cityName)に保管してください。
request.predicate=[NSPredicate predicateWithFormat:@"City = %@",cityName];
同じエンティティでこれを行う必要があります。これにより、都市名が選択されたオブジェクトのみがフェッチされます。さて、あなたは2通りの方法でフェッチを行うことができ、次のいずれか
は全体のエンティティを取得し、その後dispay形式 entityName.Location
を使用します。この場合、あなたは オブジェクトのようにフェッチするためのプロパティを設定し
のNSArrayのでしょう:
第2のケースで [request setPropertiesToFetch:[NSArray arrayWithObject:@"Location"]];
を、それが結果を設定することを忘れないでください(NSDictionaryのを返します。前述のようにNSDictionaryResultTypeとして入力します)。
[Pro Core Data For iOS](http://www.apress.com/9781430233558)は、コアデータに関する非常に深いチュートリアルベースの書籍です。 – AndrewHuss