【问题标题】:is @"/dev/null" a valid path on the device?@"/dev/null" 是设备上的有效路径吗?
【发布时间】:2015-12-26 01:24:12
【问题描述】:

我将这个类用作麦克风检测:https://github.com/picciano/iOS-Audio-Recoginzer,它在模拟器中运行良好,但在设备上不起作用。

在 iPhone 上测试时,峰值功率始终为 0.000001。

我不知道NSURL *url = [NSURL fileURLWithPath:@"/dev/null"]; 是否是设备上的有效路径,有人知道吗?

感谢

【问题讨论】:

  • 第三方应用在沙盒中运行。他们无权访问沙盒之外的文件。模拟器不像真机那样有这样的限制。

标签: ios objective-c iphone


【解决方案1】:

我在类似使用该库时遇到了同样的问题 /dev/null 不是设备中的有效路径,您需要使用可写路径,例如临时路径或应用程序内的文档。

【讨论】:

  • 有道理。但不知何故,它仍然不起作用。我已将目录更改为NSString *filePath = [NSString stringWithFormat:@"%@/%@.caf", [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"], @"cache"]; NSURL *url = [NSURL fileURLWithPath:filePath];,但仍然无法正常工作。
  • 试试这个:NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; 然后追加文件
  • 它返回与我之前的代码 /var/mobile/Containers/Data/Application/278DFA56-2E41-44C4-8BA2-A9886A5F68C8/Documents 相同的目录。也没有工作。 ; (
  • @AntonioJunior 永远不要使用NSHomeDirectory() 来构建 iOS 中 Documents 文件夹的路径。它会在新版本的 iOS 上给出错误的路径。使用 Pablo 给出的代码。
  • 谢谢@rmaddy,我正在使用它知道。正如巴勃罗所说。我正在附加文件,3 秒后我删除了这个文件。这只是为了确保是一个有效的路径。它确实创建和删除了我的文件,但它仍然不起作用。此代码在模拟器上运行良好。
【解决方案2】:

我的问题出在:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];

当然,我用@Pablo Carrillo Alvarez 给出的代码替换了@"dev/null" 和NSHomeDirectory 之后。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0];

; ) 谢谢你们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-03
    • 2010-09-23
    • 1970-01-01
    • 2012-08-25
    • 2013-07-09
    • 2012-02-15
    • 1970-01-01
    相关资源
    最近更新 更多