0

ソース管理やコードを再確認することなく、iOS でプログラマーやデザイナーのワークフローを改善する方法はないかと考えていました。

現在、コードやソース管理に違和感を覚えるデザイナーが一緒に働いています。それから、彼がアプリケーションの途中でリソースを見たいと思うたびに、私は再コンパイルしなければなりません。

Web サービスを使用して、アプリケーションが起動するたびに変更されたリソースのみを取得できます。ただし、この解決策は、10 ~ 20 メガ (新しい圧縮テストなど) で約 10 本のビデオを変更すると、イライラする可能性があると感じています。

Windows 8では、ライブラリフォルダーにリソースを含むフォルダーを作成でき、彼はそれにアクセスしてリソースを置き換えることができます。その後、アプリケーションはそのフォルダからすべてのリソースをロードできます。しかし、iOS で何ができるでしょうか。SD カード (または外付けハード ドライブ) がなく、リソースをフォルダーにまとめてアプリケーションにロードすることはできないと思います。

4

2 に答える 2

3

私にとってはUIFileSharingEnabled、Info.plist に追加することで、アプリを iTunes ファイル共有で利用できるようにします。

次に、リソースをロードするための呼び出しをカスタム メソッドでラップします。次に例を示します。

- (NSString *)pathForImage:(NSString *)imageName
{
    // Somewhere like this:
    // /var/mobile/Applications/01234567-89AB-CDEF-0123-456789ABCDEF/Documents/images/
    NSString *imagesPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    imagesPath = [imagesPath stringByAppendingPathComponent:@"images"];

    NSString *path = [imagesPath stringByAppendingPathComponent:imageName];

    if ([[NSFileManager defaultManager] fileExistsAtPath:path])
    {
        return path;
    }
    else
    {
        NSString *fileName = [imageName stringByDeletingPathExtension];
        NSString *fileExt = [imageName pathExtension];
        return [[NSBundle mainBundle] pathForResource:fileName ofType:fileExt];
    }
}

そして、私の画像読み込みコードを

[UIImage imageNamed:@"foo.png"];

[UIImage imageWithContentsOfFile:[self pathForImage:@"foo.png"]];

次にデザイナーがリソースを更新したい場合、彼/彼女は iTunes を開いて、新しいファイルをアプリにドラッグ アンド ドロップできます。 iTunes ファイル共有 iTunes ファイル共有の詳細については、Apple のドキュメントを参照してください。

更新: アプリでエンド ユーザー向けに iTunes ファイル共有を利用していない場合UIFileSharingEnabledは、Info.plist で削除して無効にすることを忘れないでください。そうしないと、使用されていない機能を有効にしたために Apple がアプリを拒否する可能性があり、ユーザーを混乱させる可能性があります。

于 2012-12-17T10:22:06.453 に答える
0

シミュレーターでは機能し、デバイス上でリソースを交換するとコード署名が壊れます...もちろん、アプリを変更して、画像がアプリライブラリフォルダーから読み込まれるようにすることもできます...彼はiPhoneなどにsshしたいですか?

は彼に xcode とシミュレーターをインストールしました (実際、デザイナーに xcode を使用してもらい、彼らはアプリを構築することができました!)

于 2012-12-01T20:26:38.433 に答える