iphone - 每次重启 iPhone App 时 NSHomeDirectory 返回不同的路径

标签 iphone objective-c iphone-sdk-3.0

我注意到每次我用 Xcode 重新启动应用程序时,NSHomeDirectory 都会返回不同的路径,显然即使我手动单击该图标也是如此,因为它不会加载文件的内容。令我惊讶的是,每次我重新启动应用程序时它都会给我一个不同的目录。这在模拟器和设备上都会发生,即使我使用“ForUser”方法也是如此。我的电话是这样的:

NSString* fullPath = [NSHomeDirectory() stringByAppendingPathComponent:@"test.file"];

NSString* fullPath = [NSHomeDirectoryForUser(@"MrX") stringByAppendingPathComponent:@"test.file"];

甚至

NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [docsDirectory stringByAppendingPathComponent:@"test.file"];

两个应用程序启动的日志如下所示,注意 GUID 部分发生了怎样的变化:

loadCharacters: /var/mobile/Applications/ABE7E33E-439B-4258-8FC1-127A3CD00D87/test.file
loadCharacters: /var/mobile/Applications/71C02507-6347-4693-8CC1-537BE223179E/test.file

我做错了什么,或者我错过了什么?

解决方案:

起初我保存到 NSHomeDirectory 本身,而不是“Documents”子目录。由于 App 目录随每次部署而变化,但只有“Documents”目录中的文件被复制,因此每次部署后保存的文件都丢失了。然后我使用了“Documents”文件夹,但有人建议我应该把它放在“Documents”的子文件夹中,我只是这样做了但忘记创建文件夹,因此文件没有保存。我在这个上失败了两次。 :)

只需保存到 NSHomeDirectory() + "Documents/test.file"即可。

最佳答案

你做得对。每次将应用程序安装到模拟器或设备中时,它都会被放置到不同的目录中(我不确定为什么,但就是这样)。但是,它的所有目录结构都被移动到新位置。因此,您的相对路径将保持不变。

关于iphone - 每次重启 iPhone App 时 NSHomeDirectory 返回不同的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2154576/

相关文章:

ios - 获取info.plist的fileSize,防止盗版

iPhone UI搜索栏和键盘外观

iphone - MkMapView 在触摸时放下别针

iphone - iPhone OS 中的核心动画中的 "misaligned image"是什么?

ios - NSUndoManager 调用不再存在的方法

objective-c - 使用 NSScanner 删除字符串中的注释?

objective-c - 提取 Xcode 数组的索引

iphone - 从 RSS 数据中的链接获取完整详细信息

iphone - 关于自动释放/释放使用的另一个 iOS 内存管理说明

iphone - 如何让iPhone连续震动?