2009-11-10 70 views
0

我有一個是沒有得到我的移動存儲設備的程序識別的外部1TB硬盤。MAC +外部驅動器無法識別爲可移動存儲

我在下面幾行代碼來檢測連接到計算機的可移動驅動器。

的NSArray * removableDrivesPaths = [[NSWorkspace sharedWorkspace] mountedRemovableMedia];

請你們可以告訴我一個方法,讓我的外部驅動器獲得被檢測爲可移動存儲設備,或者如果有,我可以用它來檢測我的外部驅動器作爲移動存儲設備的任何其他Cocoa框架的功能。

感謝

回答

0

不知道你想要做什麼,但如果你只是想從該設備訪問文件,它應該出現在/卷的驅動器。

+0

我有一個應該只能從外部移動存儲設備如usb驅動器啓動的應用程序。所有驅動器都顯示在/卷下,但我的應用程序應檢查它是否從可移動存儲設備啓動。因此如果它的可移動存儲路徑匹配,它會檢查其啓動路徑是否匹配。 – King 2009-11-10 00:39:38

1

「可移動」媒體是一個是從它被放置內的驅動器物理上不同的 - 即軟盤或CD驅動器。所以這在沒有返回外部硬盤時是正確的。不過,我不確定你會如何去尋找你想要的信息。

1

從OS X 10.7開始,NSURL API有兩個密鑰NSURLVolumeIsLocalKeyNSURLVolumeIsInternalKey。外部驅動器應該是本地的,但不是內部的。另外NSURLVolumeIsInternalKey必須不是nil(對於安裝的磁盤映像,它是零)。

NSError *error; 
NSArray *resourceKeys = @[NSURLVolumeIsLocalKey, NSURLVolumeIsInternalKey]; 
NSDictionary *valuesDict = [volumeURL resourceValuesForKeys:resourceKeys error:&error]; 
if (valuesDict != nil) { 
    NSNumber *isLocal = valuesDict[NSURLVolumeIsLocalKey]; 
    NSNumber *isInternal = valuesDict[NSURLVolumeIsInternalKey]; 
    if (isLocal != nil && isInternal != nil) { 
     BOOL isExternal = [isLocal boolValue] && ![isInternal boolValue]; 
     NSLog(@"Drive external: %d", isExternal); 
    } 
} else { 
    NSLog(@"Error getting resource for volume URL: %@", [error localizedDescription]); 
} 
相關問題