在iOS应用程序中加载静态对象的最佳方法是什么?

时间:2015-08-17 01:04:08

标签: ios objective-c static-data

我有一个大约100个地址的列表。我想使用CLGeocoder Class 以及geocodeAddressDictionary或geocodeAddressString方法,以获取每个地址的CLPlacemarks列表。我不希望应用程序每次启动时都这样做(因为地址永远不会改变,它需要互联网)。每次应用程序启动时,如何静态存储要加载的100个CLPlacemark对象的列表?

1 个答案:

答案 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文件进行反序列化。