ブラジル政府当局から提供されたこの小さな Excel ファイルがあります。これには、ブラジルの各都市のレコード、各都市の郵便番号範囲、およびその「都市コード」が含まれています。
特定の都市の「都市コード」を取得する必要があります。
郵便番号の範囲を表示する最初の 2 つの列に基づいて、都市の特定の郵便番号を解析し、その「都市コード」を返すのが最善の方法だと思います。
AppleScript を使用して、指定された Excel ファイルの plist ファイルをコンパイルできると確信しています。しかし、ZIPコードを解析したら、plistファイルから特定のエントリを取得するために、objectiveCコードの数行を教えてもらえますか?
http://www.idanfe.com/dl/codes.xls.zipの Excel ファイルを参照してください。
ありがとう。
サンプルの plist ファイルをhttp://www.idanfe.com/dl/cityCodes.plistにアップロードしました
さらなる説明:
01001000 から 05895490 の範囲にある 01123010 のような ZIP CODE 値を解析します。したがって、私のルーチンは City Code = 3550308 および City Name = São Paulo を返すはずです。
これを達成する方法がわかりません。サンプル plist を間違って作成した可能性があります。
AppleScript を使用して、Excel シートから読み取って plist ファイルを作成できると確信しています。
しかし、特定の ZIP CODE 範囲の市区町村コードを取得するのは難しい作業です。
+++ 編集: +++
私はそれを解決したと思いますが、私が書くほとんどすべてのように、それはちょっと不器用に見えます.
この AppleScript は Excel シートを読み取り、plist ファイルを書き込みます: http://www.idanfe.com/dl/creating.scpt.zip
ここに 1 MB の plist ファイルがあります: http://www.idanfe.com/dl/cityCodes.plist.zip
これは、必要な都市コードを取得するために書いたコードです。
NSString *zipCodeString;
zipCodeString = @"99990000";
NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"cityCodes" ofType:@"plist"];
NSDictionary *cityCodes_dictionary = [NSDictionary dictionaryWithContentsOfFile:plistPath];
NSArray *allKeys = [cityCodes_dictionary allKeys];
int i = 0;
for (i = 0 ; i <= [allKeys count]; i++) {
NSString *someKey = [allKeys objectAtIndex:i];
NSRange range08 = NSMakeRange (0, 8);
NSRange range88 = NSMakeRange (8, 8);
NSString *startZipCode = [someKey substringWithRange:range08];
NSString *finalZipCode = [someKey substringWithRange:range88];
int startZipCodeInt = [startZipCode intValue];
int finalZipCodeInt = [finalZipCode intValue];
if(startZipCodeInt <= [zipCodeString intValue] && finalZipCodeInt >= [zipCodeString intValue]){
NSLog(@"we found a winner");
NSString *cityCode = [NSString stringWithFormat: @"%@",[[cityCodes_dictionary objectForKey:someKey]objectForKey:@"City Code"]];
[cityCodeIBGEField setStringValue:cityCode];
NSLog(@"cityCode = %@",cityCode);
break;
} else {
// NSLog(@"no winners");
}
}
基本的に、start zipCode と finalZip Code を 16 桁の 1 つの文字列に追加するので、plist ファイルに 1 つのレコードを作成します。
次に、City Code を検索するときに、長いキー (2 つの郵便番号) を 2 つに分割し (通常の zipCode に戻します)、cityCode が必要な特定の zipCode に適合するレコードを検索します。
いくつかの方法は私には最適ではありませんが、驚いたことに、コードは非常に高速ですが、ループ内にあります。
コメントいただければ幸いです...
ありがとう、