【问题标题】:Mac + External drive not recognized as removable storageMac + 外部驱动器未被识别为可移动存储
【发布时间】:2009-11-10 00:16:56
【问题描述】:

我有一个外部 1TB 驱动器,但我的程序没有将其识别为可移动存储设备。

我的代码中有以下几行来检测连接到机器的可移动驱动器。

NSArray *removableDrivesPaths = [[NSWorkspace sharedWorkspace]mountedRemovableMedia];

请你们告诉我一种让我的外部驱动器被检测为可移动存储设备的方法,或者是否有任何其他可可框架功能可用于将我的外部驱动器检测为可移动存储设备。

谢谢

【问题讨论】:

    标签: macos removable-storage


    【解决方案1】:

    “可移动”媒体是一种在物理上与它所在的驱动器不同的媒体 - 即软盘或 CD 驱动器。所以这是正确的不返回外部硬盘驱动器。不过,我不确定您将如何找到所需的信息。

    【讨论】:

      【解决方案2】:

      从 OS X 10.7 开始,NSURL API 有两个键 NSURLVolumeIsLocalKeyNSURLVolumeIsInternalKey。外部驱动器应该是本地的,而不是内部的。此外,NSURLVolumeIsInternalKey 不能是 nil(对于挂载的磁盘映像,它是 nil)。

      NSError *error;
      NSArray *resourceKeys = @[NSURLVolumeIsLocalKey, NSURLVolumeIsInternalKey];
      NSDictionary *valuesDict = [volumeURL resourceValuesForKeys:resourceKeys error:&error];
      if (valuesDict != nil) {
          NSNumber *isLocal = valuesDict[NSURLVolumeIsLocalKey];
          NSNumber *isInternal = valuesDict[NSURLVolumeIsInternalKey];
          if (isLocal != nil && isInternal != nil) {
              BOOL isExternal = [isLocal boolValue] && ![isInternal boolValue];
              NSLog(@"Drive external: %d", isExternal);
          }
      } else {
          NSLog(@"Error getting resource for volume URL: %@", [error localizedDescription]);
      }
      

      【讨论】:

        【解决方案3】:

        不确定您要做什么,但如果您只想从设备访问文件,它应该在 /Volumes 下显示为驱动器。

        【讨论】:

        • 我有一个应用程序,它只能从外部可移动存储设备(如 USB 驱动器)启动。所有驱动器都显示在 /Volumes 下,但我的应用程序应检查它是否是从可移动存储设备启动的。因此它会检查其启动路径是否匹配可移动存储路径。
        猜你喜欢
        • 1970-01-01
        • 2015-05-14
        • 2018-10-18
        • 1970-01-01
        • 2021-01-04
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 2014-09-14
        相关资源
        最近更新 更多