如何在iOS应用程序中最佳地加载静态对象?

3
我有一个大约有100个地址的列表。我想使用CLGeocoder Class和geocodeAddressDictionary或geocodeAddressString方法为每个地址获取CLPlacemarks列表。我不希望应用程序每次启动时都执行此操作(因为地址永远不会更改且需要互联网)。我如何静态存储100个CLPlacemark对象的列表,以便每次应用程序启动时加载?
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文件。

1
@user2662692,如果别人真的帮助了你解决了问题,回报一下是礼貌的举止...只是说一下。 - soulshined
@soulshined 放松一下...它不会让我这么早就把它标记为答案。 - user2662692

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接