2

以下のコードを使用して、アプリケーション サポート ディレクトリを取得します。

NSString * supportDir = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) lastObject];

iPhoneまたはシミュレーターで実行された場合、正しいパスを取得します(アプリGUIDを使用):
a)iphone:
/var/mobile/Applications/APP_GUID/Library/Application Support/
b)シミュレーター:
/Users/realuser/Library/Application Support/iPhone Simulator/6.0/Applications/APP_GUID/Library/Application Support/

ここで:
- realuser - 自分のユーザー名
- APP_GUID - アプリケーションの GUID

しかし、CIサーバーで実行すると-ハドソン(自動ビルドですが、iOS 5.1シミュレーターを使用)

/Users/realuser/Library/Application Support/

そのため、パスに GUID アプリケーション文字列はありません。

どちらの場合も、配列からの関数:
NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES)
にはオブジェクトが 1 つしか含まれていないため、それが配列の最後のオブジェクトであるか最初のオブジェクトであるかに違いはありません。

私はいくつかのグーグル調査を行いましたが、解決策はありません。ハドソンの環境変数に欠けていると思いますか?どうすれば修正できますか?

おそらく、インターフェース URLsForDirectory:inDomains: を使用する方が良いでしょうか?
--
よろしく
アダム

4

1 に答える 1

0

これは、アプリケーションの実行方法に関連しています。iPhone とシミュレーターではアプリケーションはサンドボックス化されているため、パスにはアプリケーションの GUID が含まれます。CI サーバーではアプリケーションはサンドボックス化されていないため、アプリケーションの GUID はありません。

于 2013-01-23T18:36:38.917 に答える