【问题标题】:My file exists though fileExistsAtPath always returns false我的文件存在,尽管 fileExistsAtPath 总是返回 false
【发布时间】:2017-01-03 23:54:41
【问题描述】:

我正在使用以下代码来检测文件是否存在。该文件确实存在,但 fileExistsAtPath 总是返回 false

 if let receiptFound = receiptUrl?.checkResourceIsReachableAndReturnError(error){
        print("receiptUrl is \(receiptUrl?.path)") }

 print("Does the file exist \(NSFileManager.defaultManager().fileExistsAtPath(receiptUrl!.path!))")

    if NSFileManager.defaultManager().fileExistsAtPath(receiptUrl!.path!)


    {  //work with file
    }

我的输出是:

我不明白为什么当文件存在时语句返回为假?

【问题讨论】:

  • 你能调试看看 urlPath,我猜 URL 路径可能是 nil 或不正确。

标签: ios swift nsfilemanager file-exists


【解决方案1】:

在我看来,您正在处理的 URL 位于应用沙箱之外。

您的应用只能访问数量非常有限的目录(应用包的一部分、文档、缓存和一些其他文件夹)。文件管理器可能无权访问 StoreKit 目录,因此函数 fileExistsAtPath 返回 false。

编辑

请注意,路径的开头是 /private。这有力地表明,像您这样的第三方应用无法访问该文件。

【讨论】:

  • 谢谢邓肯,这对我来说是一个挑战,因为我正试图从收据中提取数据来验证它,但如果我无权访问 StoreKit 目录,那么这可能是一个挑战.
  • 在未越狱的 iOS 设备上可能不可能
猜你喜欢
  • 2021-07-03
  • 2013-03-26
  • 2016-03-23
  • 2015-10-20
相关资源
最近更新 更多