检测卷挂载并获取其路径

Detect volume mount and get its path

我需要检测何时在 OS X 中安装卷并获取其完整路径。

我已经成功地实现了检测何时挂载卷的代码,但是,获取它的路径是我仍在努力解决的问题。

检测何时安装卷的代码如下所示:

-(void) monitorVolumes
{
    // Notification for Mountingthe USB device

    [[[NSWorkspace sharedWorkspace] notificationCenter]addObserver:self selector: @selector(onVolumeMount:)
      name: NSWorkspaceDidMountNotification object: nil];

    // Notification for Un-Mountingthe USB device

    [[[NSWorkspace sharedWorkspace] notificationCenter]addObserver:self selector: @selector(onVolumeMount:)
      name: NSWorkspaceDidUnmountNotification object: nil];

}

-(void) onVolumeMount: (NSNotification*) notification
{
    NSLog(@"Volume Mount");

   //Code to get path here...
}

-(void) onVolumeUnmount: (NSNotification*) notification
{
    NSLog(@"Volume Unmount");
}

我不知道如何正确获取路径。

如何实现?

在通知的 userInfo 字典中,在键 NSWorkspaceVolumeURLKey 下,您会找到一个 NSURL 卷。如果你真的需要一个路径字符串,你可以向 NSURL 询问它的 path.

NSString* path = [notification.userInfo[NSWorkspaceVolumeURLKey] path];