【问题标题】:What is the best way to load static objects in an iOS app?在 iOS 应用程序中加载静态对象的最佳方式是什么?
【发布时间】:2015-08-17 01:04:08
【问题描述】:

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

【问题讨论】:

    标签: ios objective-c static-data


    【解决方案1】:

    我建议:

    将列表作为 .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 文件。

    【讨论】:

    • @user2662692 如果他们确实解决了您的问题,请奖励那些帮助您的人......只是说。
    • @soulshined 放松...它不会让我这么早就将其标记为答案
    猜你喜欢
    • 1970-01-01
    • 2010-09-20
    • 2012-12-03
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    相关资源
    最近更新 更多