【问题标题】:Best way to load content from web从网络加载内容的最佳方式
【发布时间】:2010-10-18 00:15:32
【问题描述】:

我有一个应用程序,它显示 10 张图片,每张图片都与一个按钮和一个 URL 链接相关联。我想发布这个应用程序,但能够通过网络更新图像和链接,而无需对应用程序进行更新。

我知道我可以像这样从网络上提取图像:

NSURL *url = [NSURL URLWithString: @"http://example.com/image.png"];
 NSData *data = [NSData dataWithContentsOfURL: url];
 UIImage *image = [UIImage imageWithData: data];
 UIImageView *imageView = [[UIImageView alloc] initWithImage: image];

我认为也可以从网络上提取 plist?

.xib 和 .h/.m 文件呢?我可以让我的应用程序在每次运行时检查某个 URL 以获取新的 .xib/.h/.m 文件吗?当我在两周内将这些文件上传到该 URL 时,运行该应用程序的人将让它加载新的文件?

所以不要像这样从我的资源中加载类/xib:

UIViewController *nextController = [[ClassName alloc] initWithNibName:@"ClassName" bundle:nil];

我会以某种方式将 ClassName 替换为从网络上提取的新数据?

我见过一些应用程序可以从网络中提取新数据(假设它通常是简单的图像/文本,例如 Doodle Jump 中偶尔的“新闻”更新),而无需用户下载应用程序的更新。对于实现这一目标的第一步的任何帮助将不胜感激......谢谢!

【问题讨论】:

    标签: iphone ipad header xib


    【解决方案1】:

    将捆绑在应用中的所有起始材料存储在资源文件夹中。在第一次加载时,以编程方式将所有这些材料复制到捆绑库路径。然后,您的应用程序应该只处理库目录中的数据。当您的应用首次连接到网络时,您可以将任何新数据保存到用户的库路径并覆盖旧数据。

    编译后无法写入 app bundle 目录,因为这会破坏 Apple 的签名。

    显然,这只是一个高级建议。如果不确切知道您想做什么,就很难给出详细的答案。但是,是的,允许下载和存储数据,只是不允许在应用程序包内。很遗憾,您无法向其发送新的 .h/.m 文件或 xib。

    【讨论】:

      【解决方案2】:

      您可以从 Web 加载资源,但不能在正在运行的应用程序中“编译”任何内容,因此 .m/.mh/.xib 不可用。

      您当然可以加载 plist(或其他数据文件)并使用它来引用不同的图像和链接。 (从这个意义上说,上面的http://example.com/image.png 可能是动态的。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-11
        • 1970-01-01
        • 1970-01-01
        • 2018-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-03
        相关资源
        最近更新 更多