NSSearchPathForDirectoriesInDomains根据环境返回不同的结果

时间:2012-10-06 21:07:15

标签: objective-c ios cocoa-touch filesystems

我使用下面的代码获取应用支持目录:

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

如果在iphone或模拟器上执行,我会得到正确的路径(使用app 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服务器上执行时 - Hudson(自动构建,但使用iOS 5.1 simualtor)我得到了

/Users/realuser/Library/Application Support/

所以路径中没有guid应用程序字符串。

在两种情况下,来自函数的数组:
NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES)
只包含一个对象,因此如果它是数组中的最后一个或第一个对象,则不会有任何差异。

我做了一些谷歌研究,但没有解决方案。 Hudson env变量是否缺少某些思路?我该如何解决?

使用接口URLForDirectory可能更好:inDomains :?
-
问候
亚当

1 个答案:

答案 0 :(得分:0)

这与执行应用程序的方式有关。在iPhone和模拟器应用程序是沙箱,因此路径包含应用程序的GUID,在CI服务器应用程序上没有沙箱,因此没有应用程序的GUID。