3

我希望能够在应用程序发布后通过更改 xibs、捆绑它们、下载该捆绑包并将客户端配置为在这些新捆绑包中查找新 xibs 来自定义我的应用程序中的 xib。

到目前为止,我已经在我创建的包中添加了一个 xib,并正在尝试下载它:

   // bundle URL is NSURL to uploaded resource for bundle
   NSBundle *myBundle = [[NSBundle bundleWithURL:bundleURL] retain];

我收到此错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSBundle initWithURL:]: non-file URL argument'

我的问题:有可能做我打算做的事情吗?此错误表明这是不可能的。

如果无法下载捆绑包,是否可以仅下载 xib 并使用它?

谢谢!

4

2 回答 2

5

您收到此错误是因为捆绑包作为文件夹存储在文件系统中。您可以轻松下载文件,但不能下载文件夹。NSBundle 知道这一点,因此它只允许本地文件 URL 进行初始化。您可以通过三种方式下载捆绑包:

  1. 如此处接受的答案中所述,您可以将捆绑包下载为 zip 存档并取消存档。

  2. 您可以在服务器上存储一个额外的文件,其中列出了包中每个文件的文件名,并通过下载每个文件在本地创建它。

  3. 您可以指定将由所有捆绑包使用的格式,并从捆绑包中下载这些文件。这类似于 2,但具有内置而不是在服务器上的文件名列表。

于 2011-06-23T22:43:07.833 回答
4

的,您可以加载仅包含 XIB、图像和其他资产的包。不要尝试加载包含代码的包,如果您尝试加载代码,Apple 会明确检查其数字签名,这会导致加载失败。

于 2011-06-23T21:35:04.473 回答