【发布时间】:2013-04-19 14:22:22
【问题描述】:
如何确定已安装的设备是否可以卸载/弹出?
我尝试在NSFileManager 的帮助下获取所有设备。
NSArray *keys = [NSArray arrayWithObjects:NSURLVolumeNameKey, NSURLVolumeURLForRemountingKey, NSURLVolumeIsEjectableKey, NSURLVolumeIsRemovableKey, nil];
NSArray *urls = [[NSFileManager defaultManager] mountedVolumeURLsIncludingResourceValuesForKeys:keys options:0];
for (NSURL *url in urls)
{
NSError *error;
NSNumber *isRemovable;
NSString *volumeName;
[url getResourceValue:&isRemovable forKey:NSURLVolumeIsRemovableKey error:&error];
[url getResourceValue:&volumeName forKey:NSURLVolumeNameKey error:&error];
NSLog(@"Standard Device : %@ - Removable: %c", volumeName, [isRemovable boolValue]);
}
但是当我遍历列表时,我总是得到这个,例如:
Standard Device Name: My Book - isEjectable:
仅供参考,“我的书”是一个 USB 驱动器。
希望有人能指出问题所在。
谢谢
【问题讨论】:
-
您的日志行应该如下所示: NSLog(@"Standard Device : %@ - Removable: %@", volumeName, [isRemovable boolValue] ? @"yes" : @"no") ;但我在此列表中没有可移动或可弹出驱动器。
-
嗯,这使日志记录更清晰,但结果是一样的,我的 USB 驱动器没有被识别为可移动设备。
-
“可移动设备”和“可移动媒体”是有区别的。 USB 使概念变得模糊,因为您可以插入 USB 记忆棒或带有固定介质的 SSD 或带有可移动介质的 DVD 驱动器等介质。
标签: objective-c cocoa