2011-06-23 22 views
3

我希望能夠通過更改xibs,捆綁它們,下載該捆綁軟件並配置客戶端來查看這些新捆綁包中的新xib,從而在應用程序發佈後自定義xib。iOS - 是否可以使用更新的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

Yes,您可以加載僅包含XIB,圖像和其他資產的包。不要嘗試加載其中包含代碼的包,如果您嘗試加載代碼會導致加載失敗,Apple會對其數字簽名進行明確檢查。

+0

超級有用 - 非常感謝你的鏈接! – Mark

+0

@RyanR你怎麼知道蘋果已經明確地檢查了試圖加載代碼的應用程序?你在說「負載會失敗」。這是否意味着蘋果會批准該應用程序,但是當它試圖加載NSBundle時,它會失敗? – Roberto

+0

@Roberto這是iOS圍牆花園的全部目的。蘋果已經設計了這個系統,以確保沒有人能夠運行沒有簽名的代碼(這就是爲什麼我們都喜歡討厭的批准過程是必要的)。它也[記錄](https://developer.apple.com/library/mac/#documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html),您不能爲iOS創建框架捆綁包。我試圖在幾個版本之前做它,並導致一個例外。我很確定他們在審批過程中也會進行掃描。 – RyanR

5

您正在收到此錯誤,因爲一個捆綁包作爲文件夾存儲在文件系統中。您可以輕鬆下載文件,但無法下載文件夾。 NSBundle知道這一點,所以它只允許本地文件的URL進行初始化。你有下載包了三個選項:

  1. 正如accepted answer here提到的,你可以下載捆綁爲一個zip壓縮包,並把它解壓縮。

  2. 您可以在服務器上存儲一個額外的文件,列出軟件包中每個文件的文件名,並通過下載每個文件在本地創建它。

  3. 您可以指定一種將被所有包使用的格式,並從該包中下載這些文件。這與2相似,但具有內置文件名的列表,而不是在服務器上。

+0

明白了!我正在關注該鏈接。謝謝! – Mark

相關問題