每次运行后,Xcode 6会继续在iOS8模拟器中重命名我的应用程序目录.

Jos*_*nto 69 xcode objective-c ios xcode6 ios8

我正在运行Xcode 6 Beta 5,但自第一次测试以来,这种情况一直在发生.模拟器中的应用程序目录在每次运行后都会被重命名.我花了一段时间来弄明白这一点.我正在使用它来获取doc的dir参考.

NSString *folder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                        NSUserDomainMask,
                                                        YES) lastObject];

NSLog(@"Documents Dir: %@",folder);
Run Code Online (Sandbox Code Playgroud)

现在例如在第一次运行时它将是:

/ Users/Joey/Library/Developer/CoreSimulator/Devices/5B9930EE-A9B4-4B36-BABB-AA864ACAF2DE/data/Containers/Data/Application/4B10C2E4-A5C3-4C64-93B1-4069FCCB9C46/Documents

现在第二次运行:

/ Users/Joey/Library/Developer/CoreSimulator/Devices/5B9930EE-A9B4-4B36-BABB-AA864ACAF2DE/data/Containers/Data/Application/7E9EB62D-115A-4092-AD23-CB6BA3E5E10F/Documents

第三轮:

/ Users/Joey/Library/Developer/CoreSimulator/Devices/5B9930EE-A9B4-4B36-BABB-AA864ACAF2DE/data/Containers/Data/Application/EC8F41E8-52ED-4B10-9808-B3ACC46FC6AA/Documents

这对我的应用程序造成了严重破坏,因为它存储了应用程序中某些文件的路径引用.这不是我的NSLog语句返回不正确的结果,我验证了这是在Finder中发生的事情.它每次都在改变这个名字.有没有人见过这种情况?这是一个我误解的"特征"吗?

Jos*_*nto 49

事实证明Xcode 6实际上每次运行都会更改应用程序的UUID,而我存储绝对路径的错误.

  • 不只是Xcode; 从商店下载应用程序的更新版本时会发生同样的情况(HEX部分更改).应该相对于app文件夹存储所有路径,并在运行时重建完整路径(这个实际上只有我一次!) (9认同)

bri*_*ear 8

使用SIMPHOLDERS

我在Xcode 5上使用这个应用程序,在Finder中为模拟器中当前运行的应用程序打开Documents文件夹.

http://simpholders.com/

还没有为Xcode 6做好准备(截至2014年9月24日),但保存了所有这些麻烦.

在Xcode 6/iOS8中捆绑包现在与数据分开./应用程序GUID在Xcode中的运行之间重新生成(不知道为什么)

  DOCUMENTS DIR:/Users/gbxc/Library/Developer/CoreSimulator/Devices/AC79941F-EC56-495E-A077-773EEE882732/data/Containers/Data/Application/C220D351-0BE7-46BA-B35E-D16646C61A3F/Documents
mainBundlePath_:/Users/gbxc/Library/Developer/CoreSimulator/Devices/AC79941F-EC56-495E-A077-773EEE882732/data/Containers/Bundle/Application/12200D1D-9B67-408B-BCF7-38206CBE0940/myappname.app/BLANK_BLOG_SCALED.jpg
Run Code Online (Sandbox Code Playgroud)

1.在模拟器中找到设备文件夹

/Users/gbxc/Library/Developer/CoreSimulator/Devices/
Run Code Online (Sandbox Code Playgroud)

打开每个/device.plist以查看哪个GUID是XCode中的哪个设备 - 我认为这是静态的

3.找到你在iPad 2上运行的设备 - 我认为这是静态的

/Devices/AC79941F-EC56-495E-A077-773EEE882732
Run Code Online (Sandbox Code Playgroud)

4.找到您的应用程序/文档文件夹

/AC79941F-EC56-495E-A077-773EEE882732/data/Containers/Data/Application/C220D351-0BE7-46BA-B35E-D16646C61A3F/Documents
Run Code Online (Sandbox Code Playgroud)

请注意GUID C220D351-0BE7-46BA-B35E-D16646C61A3F每次在XCode 6中运行应用程序时都会重新生成

 NSArray *paths_ = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        if(paths_){
            _docsDir = [paths_ firstObject];
            DebugLog(@"DOCUMENTS DIR:%@",_docsDir);         
        }else{
            ErrorLog(@"paths_ is nil - cant get Documents directory");
        }
Run Code Online (Sandbox Code Playgroud)

MAIN BUNDLE路径

NSString *mainBundlePath_ = [[NSBundle mainBundle] pathForResource:@"someimageinyourbundle" ofType:@"jpg"];
/AC79941F-EC56-495E-A077-773EEE882732/data/Containers/Bundle/Application/12200D1D-9B67-408B-BCF7-38206CBE0940/clarksonsiq.app/BLANK_BLOG_SCALED.jpg
Run Code Online (Sandbox Code Playgroud)

永远不会将路径缓存到/文件之间的运行它会改变.

我把它连载到一个plist并且无法弄清楚它们为什么一直在消失

上面的/ GUID在运行之间不断变化但是如果在Finder中打开/ Documents文件夹保持打开状态.

https://devforums.apple.com/thread/235911?tstart=0

https://devforums.apple.com/thread/238754?tstart=0
Run Code Online (Sandbox Code Playgroud)


Par*_*iya 7

免费解决方案

使用开源库OpenSim.OpenSim是SimPholders的开源替代品,用Swift编写.

付费解决方案

使用SimPholder应用程序了解当前的应用程序位置.

在此输入图像描述

对于xcode 6.0>

下载SimPholder 2.0 alpha 2


对于xcode 5.1 <

下载SimPholders 1.5