【问题标题】:NSFileManager.defaultManager().fileExistsAtPath returns false when using iOS deviceNSFileManager.defaultManager().fileExistsAtPath 在使用 iOS 设备时返回 false
【发布时间】:2016-04-12 11:56:01
【问题描述】:

我一直在尝试使用MPMoviePlayerViewController 播放视频,并且效果很好。但是在播放之前,我想检查我要播放的视频是否真的存在,所以我使用NSFileManager.defaultManager().fileExistsAtPath,并带有iPhone相机胶卷中文件的路径

我的问题是在检查它是否存在时出现的。如果我用这段代码检查它:

// videoImageUri = "/Users/AppName/Library/Developer/CoreSimulator/Devices/3DAC8D46-3E32-4143-A552-2DB325CB5965/data/Media/DCIM/100APPLE/IMG_0006.mov"
NSFileManager.defaultManager().fileExistsAtPath(NSURL(fileURLWithPath : videoImageUri).path!)

Xcode 模拟器中使用时返回true,但在iPhone 中使用时返回false,即使文件存在。我知道它的存在是因为 MPMoviePlayerViewController 播放正确。

我使用iPhone时使用的路径是

/var/mobile/Media/DCIM/100APPLE/IMG_0150.MP4

也许,阅读相机胶卷有权限限制吗?

【问题讨论】:

  • 检查路径的大小写 - 模拟器将大小写视为相同,但 iOS(即 iPhone)不会。

标签: ios swift mpmovieplayercontroller nsfilemanager


【解决方案1】:

应用程序只允许访问它们自己的目录。对其他部分的访问被拒绝,因此所有对文件的查询自然会说它们不存在。

媒体播放等内部组件也可以访问其他目录,否则您根本无法在应用程序内部播放相机胶卷中的项目。

似乎模拟器根本没有强制执行权限。

More information about filesystem on iOS.

【讨论】:

    猜你喜欢
    • 2016-03-23
    • 1970-01-01
    • 2017-01-03
    • 2020-05-21
    • 2014-12-21
    相关资源
    最近更新 更多