【问题标题】:How should I get this Objective-C object into a local file?我应该如何将此 Objective-C 对象放入本地文件?
【发布时间】:2010-08-17 11:39:55
【问题描述】:

我有一个加载一堆 TableView 的 iPhone 应用程序。用户第一次加载应用程序时,它会从远程服务器下载 .json,将其解析为 NSDictionary 并将其作为 .plist 保存在本地设备上。

不幸的是,我不知道如何在加载数据后在 MainWindow.xib 上执行 reloadTable,因此在您退出并重新进入应用程序之前它一直是空白的。我可以花很多时间试图弄清楚如何重新加载 TableView,或者只是使用 .plist 文件预加载应用程序。大概我只是将文件放入资源文件夹或 XCode 中的其他东西中,这似乎是更简单的选择。

我的问题是,由于数据存储在 .plist 中,我不能只加载我在服务器上使用的 .json 文件。在本地文件中创建此 .plist 对象的最佳方法是什么?我希望我可以,你知道,通过电子邮件将其发送给我自己或从设备模拟器或其他东西中提取它,但这会很容易。

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    是的,如果您将 .plist 文件放在 Xcode 的 Resources 文件夹中,它将被内置到应用程序中。您可以通过以下方式找到它的路径:

    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Defaults" ofType:@"plist"];
    

    实际上,您应该能够从模拟器文件系统中获取您的应用正在创建的 .plist 文件的副本。往里看:

    ~/Library/Application Support/iPhone Simulator/User/Applications/XXXXX/Documents
    

    (其中 XXXXX 是一个非常长的随机十六进制字符串)。

    【讨论】:

      【解决方案2】:

      您可以使用通知从负责下载和缓存 json 数据的代码向表格视图发送消息:

      // add observer to table view
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadTableView) name:@"jsonDownloaded" object:nil];
      
      // send notification from json downloader
      [[NSNotificationCenter defaultCenter] postNotificationName:@"jsonDownloaded" object:self];
      

      或者,如果表格视图拥有 json 下载代码,请考虑使用委托。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 2010-12-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多