如何将已安装的设备识别为可移动设备?

时间:2013-04-19 14:22:22

标签: objective-c cocoa

如何确定是否可以卸载/弹出已安装的设备?

我试图在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驱动器。

我希望有人可以指出错误。

由于

1 个答案:

答案 0 :(得分:4)

您希望NSURLVolumeIsEjectableKey不是NSURLVolumeIsRemovableKey

NSURLVolumeIsRemovableKey表示可以从设备中物理删除媒体。 NSURLVolumeIsEjectableKey表示可以卸载卷。