我有一个大约100个地址的列表。我想使用CLGeocoder Class 以及geocodeAddressDictionary或geocodeAddressString方法,以获取每个地址的CLPlacemarks列表。我不希望应用程序每次启动时都这样做(因为地址永远不会改变,它需要互联网)。每次应用程序启动时,如何静态存储要加载的100个CLPlacemark对象的列表?
答案 0 :(得分: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文件进行反序列化。