我想通过更改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并使用它?
谢谢!
答案 0 :(得分:5)
您收到此错误是因为捆绑包存储为文件系统中的文件夹。您可以轻松下载文件,但无法下载文件夹。 NSBundle知道这一点,所以它只允许本地文件URL进行初始化。下载包有三种选择:
正如accepted answer here中所述,您可以将该软件包下载为zip存档并取消归档。
您可以在服务器上存储一个额外的文件,列出软件包中每个文件的文件名,并通过下载每个文件在本地创建。
您可以指定所有捆绑包将使用的格式,并从捆绑包中下载这些文件。这类似于2,但是内置了文件名列表而不是服务器上。
答案 1 :(得分:4)
Yes,您可以加载仅包含XIB,图像和其他资源的捆绑包。不要尝试加载包含代码的包,如果您尝试加载代码,Apple会明确检查其数字签名,这会导致加载失败。