2011-06-23 8 views
3

アプリがリリースされた後、xibsを変更してバンドルし、バンドルをダウンロードし、クライアントが新しいxibsの新しいバンドルを見るように設定することで、アプリ内のxibsをカスタマイズできます。iOS - アップデートされたxibsでインターネットからバンドルをダウンロードできますか?

これまでのところ、私は私が作成したバンドルに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、画像、その他のアセットだけでバンドルを読み込むことができます。コードを含むバンドルをロードしようとしないでください。コードをロードしようとすると、アップルは電子署名を明示的にチェックします。これにより、ロードが失敗することになります。

+0

スーパーヘルプ - リンクありがとうございました! – Mark

+0

@RyanR Appleがコードを読み込もうとするアプリケーションを明示的にチェックしていることをどうやって知っていますか?あなたは、 "負荷は失敗する"と言っています。それはAppleがこのアプリを承認することを意味するが、NSBundleを読み込もうとすると失敗するだろうか? – Roberto

+0

@Robertoそれは、iOSである壁に囲まれた庭の全目的です。アップルは、誰も署名されていないコードを実行できないようにシステムを設計しています(これは、私たちが嫌うことが大好きな承認プロセスが必要な理由です)。 iOS用のフレームワークバンドルを作成できないことも、[文書化されている](https://developer.apple.com/library/mac/#documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html)です。私は数回前にそれをやろうとしましたが、例外が発生しました。私はかなり彼らが承認の間にそれをスキャンすると確信しています。 – RyanR

5

バンドルがファイルシステムにフォルダとして保存されているため、このエラーが発生しています。ファイルを簡単にダウンロードできますが、フォルダをダウンロードすることはできません。 NSBundleはこれを知っているので、初期化のためにローカルファイルURLのみを許可します。 accepted answer hereで述べたように

  1. 、あなたはzipアーカイブとしてバンドルをダウンロードし、それをアーカイブ解凍することができます:あなたはバンドルをダウンロードするための3つのオプションがあります。

  2. バンドル内の各ファイルのファイル名を一覧表示する追加のファイルをサーバーに格納し、各ファイルをダウンロードすることでローカルに作成できます。

  3. すべてのバンドルで使用される形式を指定し、バンドルからそれらのファイルをダウンロードできます。これは2と似ていますが、サーバーではなくファイル名のリストが組み込まれています。

+0

そのリンクをフォローしています。ありがとう! – Mark