Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS应用程序中加载静态对象的最佳方式是什么?_Ios_Objective C_Static Data - Fatal编程技术网

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

在iOS应用程序中加载静态对象的最佳方式是什么?,ios,objective-c,static-data,Ios,Objective C,Static Data,我有一个大约100个地址的清单。我想使用 以及geocodeAddressDictionary或geocodeAddressString方法,以获取每个地址的CLPlacemarks列表。我不希望应用程序每次启动时都这样做(因为地址永远不会改变,而且需要互联网)。如何静态存储每次启动应用程序时要加载的100个CLPlacemark对象的列表 我建议: 将列表以.plist文件或JSON文件的形式存储在应用程序包中,然后在启动时将其解析为静态NSDictionary或作为Singleton对象的实

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

我建议:

将列表以.plist文件或JSON文件的形式存储在应用程序包中,然后在启动时将其解析为静态NSDictionary或作为Singleton对象的实例变量

首先将100个地址序列化为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文件。

@user2662692如果帮助您解决问题的人确实解决了您的问题,那么有礼貌地奖励他们。@soulshined relaxy。。。我不会那么早就把它作为答案