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 回答