遇到 NSFileManager defaultManager 时 iPhone 模拟器无法正常工作

Posted

技术标签:

【中文标题】遇到 NSFileManager defaultManager 时 iPhone 模拟器无法正常工作【英文标题】:iPhone Simulator not working when encountering NSFileManager defaultManager 【发布时间】:2012-09-25 22:34:51 【问题描述】:

我对 ios 开发还很陌生,但这让我非常困惑......

我的应用正在做一个简单的检查文件是否存在,如下所示:

if ([[NSFileManager defaultManager] fileExistsAtPath:[self.countDatabase.fileURL path]]) ....

上周运行良好,并且在 iOS 设备本身上仍然运行良好。但是当 iPhone 模拟器到达这行代码时,它就……停止了。没有错误,它不会冻结,它只是停止。我可以在其中启动其他操作,但它永远不会完成之前启动的操作。我不明白。自上周以来,这台 Macbook 上唯一发生的变化是我将 OSX 更新到 10.8.2 并更新到 iTunes 10.7。

有没有人遇到过这个问题或者知道如何进一步调试这个问题?如果我单步执行代码,我会到达这一行,它会停止单步执行。就好像模拟器认为它已经完成了一样。

【问题讨论】:

【参考方案1】:

因为我用了很多次:

 [[NSFileManager defaultManager] fileExistsAtPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:@"file.pdf"]]]

似乎[self.countDatabase.fileURL path] 正在返回错误的值作为路径。我会NSLog 看看里面有什么。

【讨论】:

当我调试并查看路径时,我看到本地文件系统上的有效路径。 哦,我没有读到设备工作正常。所以这在我看来是一个模拟器问题。您是否尝试删除该应用(以清除使用该应用 ID 创建的任何路径)? 我已经重置了模拟器,事实上,我已经删除并重新安装了xcode... 耸耸肩。该问题似乎发生在我的 coredata 文档的 openWithCompletionHandler 调用期间。它在设备上运行良好(这意味着它实际上会执行我的代码块以在成功时运行,而在模拟器中它不会这样做。

以上是关于遇到 NSFileManager defaultManager 时 iPhone 模拟器无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

我们如何关闭 NSFileManager?

我如何保存在 NSFileManager 中?

如何正确地将文本文件传递给 NSFileManager

NSFileManager 在模拟器上运行良好,但在设备上运行良好

NSFileManager.contentsOfDirectoryAtURL 返回的文件根据 NSFileManager.fileExistsAtPath 不存在?

NSFileManager 多实例写入原子性