我有一个大约 100 个地址的列表。我想使用CLGeocoder 类 和 geocodeAddressDictionary 或 geocodeAddressString 方法来获取每个地址的 CLPlacemarks 列表。我不希望应用程序每次启动时都这样做(因为地址永远不会改变并且它需要互联网)。如何静态存储每次应用启动时要加载的 100 个 CLPlacemark 对象的列表?
问问题
172 次
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 回答