3

私は約100のアドレスのリストを持っています。CLGeocoder クラス と geocodeAddressDictionary または geocodeAddressString メソッドを使用して、各住所の CLPlacemarks のリストを取得したいと考えています。アプリが起動するたびにこれを実行したくありません(アドレスが変更されることはなく、インターネットが必要なため)。アプリが起動するたびに読み込まれる 100 個の CLPlacemark オブジェクトのリストを静的に保存するにはどうすればよいですか?

4

1 に答える 1

2

私は提案します:

リストをアプリ バンドルに .plist ファイルまたは JSON ファイルとして保存し、起動時に静的 NSDictionary に解析するか、Singleton オブジェクトのインスタンス変数として解析できます。

まず、100 個の住所を JSON ファイルにシリアル化します。http://www.objgen.com/jsonのようないくつかのオンライン ツールを使用してみることができます。

テキスト JSON ファイルを作成したら、そのファイルを Xcode のプロジェクトにドラッグします。次に、次を使用して解析できます。

NSError *error;
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Addresses" ofType:@"json"];  
NSURL *localFileURL = [NSURL fileURLWithPath:filePath];
NSData *contentOfLocalFile = [NSData dataWithContentsOfURL:localFileURL];
NSDictionary *addresses = [NSJSONSerialization JSONObjectWithData:contentOfLocalFile 
                                            options: NSJSONReadingMutableContainers 
                                              error:&error];

同じ方法を使用して、PLIST ファイルを逆シリアル化できます。

于 2015-08-17T01:15:40.297 に答える