MAC +外部驱动器无法识别为可移动存储
问题描述:
我有一个是没有得到我的移动存储设备的程序识别的外部1TB硬盘。MAC +外部驱动器无法识别为可移动存储
我在下面几行代码来检测连接到计算机的可移动驱动器。
的NSArray * removableDrivesPaths = [[NSWorkspace sharedWorkspace] mountedRemovableMedia];
请你们可以告诉我一个方法,让我的外部驱动器获得被检测为可移动存储设备,或者如果有,我可以用它来检测我的外部驱动器作为移动存储设备的任何其他Cocoa框架的功能。
感谢
答
不知道你想要做什么,但如果你只是想从该设备访问文件,它应该出现在/卷的驱动器。
答
“可移动”媒体是一个是从它被放置内的驱动器物理上不同的 - 即软盘或CD驱动器。所以这在没有返回外部硬盘时是正确的。不过,我不确定你会如何去寻找你想要的信息。
答
从OS X 10.7开始,NSURL API有两个密钥NSURLVolumeIsLocalKey
和NSURLVolumeIsInternalKey
。外部驱动器应该是本地的,但不是内部的。另外NSURLVolumeIsInternalKey
必须不是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]);
}
我有一个应该只能从外部移动存储设备如usb驱动器启动的应用程序。所有驱动器都显示在/卷下,但我的应用程序应检查它是否从可移动存储设备启动。因此如果它的可移动存储路径匹配,它会检查其启动路径是否匹配。 – King 2009-11-10 00:39:38