cocoa如何获得ALREADY挂载的无法安装的磁盘

Jiu*_*hao 2 mount disk nsworkspace

NSWorkspaceDidMountNotification可以很好地获取刚安装的磁盘的信息.但是,如何在应用程序启动之前获取安装磁盘的信息?

命令行:"diskutil list"和"diskutil info /"有效,但应该有一个简单的编程方法.

搜索结果"DiskArbitration"或"VolumeToBSDNode示例"不起作用,IOkit很难.

BTW,有人推荐使用这个吗?[NSWorkspace getFileSystemInfoForPath:isRemovable:isWritable:isUnmountable:description:type:]

Yun*_*chi 5

怎么样[NSFileManager mountedVolumeURLsIncludingResourceValuesForKeys:options:]

编辑:这是一段代码,用于说明如何使用它来获取可移动驱动器及其卷名.

NSArray *keys = [NSArray arrayWithObjects:NSURLVolumeNameKey, 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];
  if ([isRemovable boolValue]) {
    [url getResourceValue:&volumeName forKey:NSURLVolumeNameKey error:&error];
    NSLog(@"%@", volumeName);
  }
}
Run Code Online (Sandbox Code Playgroud)