检测卷挂载并获取其路径
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];
我需要检测何时在 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];