0

都市ごとにデータをフィルタリングし、テーブル セクションごとに出力したいと考えています。私はこのようなコードを持っています。

NSMutableArray *key1=[NSMutableArray arrayWithCapacity:count];
NSMutableArray *city=[NSMutableArray arrayWithCapacity:count];
NSMutableArray *name= [NSMutableArray arrayWithCapacity:count];
for(id key in data) {
    [key1 addObject:key];
}
for (int i=0;i<[key1 count]; i++) {
    NSLog(@"key:%@",[key1 objectAtIndex:i]);
}
for (int i=0;i<[key1 count]; i++) {
    NSDictionary *email_key=[data objectForKey:[key1 objectAtIndex:i]];
    [city addObject:[email_key objectForKey:@"city"]]; 
    [name addObject:[email_key objectForKey:@"f_name"]];
}

plistからの都市の配列があります。

私の Plist のコンテンツ:

<key>bh@gmail.com</key>
<dict>
    <key>fnmae</key><string>hello</string>
    <key>city</key><string>DElhi</string>
</dict>
<dict>
    <key>fnmae</key><string>hi</string>
    <key>city</key><string>Bombay</string>
</dict>
4

1 に答える 1

0

最初に、次のようにすべての一意の都市名を取得します。

NSMutableDictionary *cityBasedData=[[NSMutableDictionary alloc] init];
for(id key in data) {
    [key1 addObject:key];
}
for (int i=0;i<[key1 count]; i++) {
    NSDictionary *email_key=[data objectForKey:[key1 objectAtIndex:i]];
    if (![cityBasedData objectForKey:[email_key objectForKey:@"city"]]) {
     NSMutableArray *nameList = [[NSMutableArray alloc] init];
     [nameList addObject:[email_key objectForKey:@"f_name"]];
     [cityBasedData setValue:nameList forKey:[email_key objectForKey:@"city"]];
     [nameList release]; 
    }
    else
    {
      NSMutableArray *nameList = [cityBasedData objectForKey:[email_key objectForKey:@"city"]];
      [nameList addObject:[email_key objectForKey:@"f_name"]];
     [cityBasedData setValue:nameList forKey:[email_key objectForKey:@"city"]];
    }

}

このディクショナリを取得したら、ディクショナリ内の各キーをトラバースして、各キーの配列を取得できます。

for(id key in cityBasedData)
{
   //get array as follows:
   NSArray *namelist = [cityBasedData objectForKey:key];
}
于 2012-07-06T12:42:06.097 に答える