2012-01-07 35 views
0

我想檢查我的「托盤」,看它是否開啓或沒有,但我不能得到它的工作,它說:目標C - DRDevice.h

"_DRDeviceIsTrayOpenKey", referenced from: 

    ´ -[UntitledAppDelegate applicationDidFinishLaunching:] in UntitledAppDelegate.o 

ld: symbol(s) not found 

代碼是:

#import <Foundation/Foundation.h> 
#import <DiscRecording/DRCoreDevice.h> 
#import <DiscRecording/DRMSF.h> 
#import <AvailabilityMacros.h> 

extern NSString* const DRDeviceIsTrayOpenKey; 

if (!DRDeviceIsTrayOpenKey == NO) { 
[NSApp terminate:nil]; 
} 

信息:

DRDeviceIsTrayOpenKey

extern NSString* const DRDeviceIsTrayOpenKey;

討論 一個由狀態方法返回的字典中的密鑰。 NSNumber包含一個布爾值,指示設備的托盤是否打開。

可用性 在Mac OS X 10.2版推出

請幫我解決這個問題,我想我的代碼是錯誤的。

回答

2

是的,你的代碼是錯誤的。該是用於從NSDictionary檢索值的關鍵。

所以,如果你能得到你的磁盤錄製狀態,你會做這樣的事情:

// this code would depend on you passing in a valid DRDevice object 
// which I've named myDiscRecordingDevice. A computer can have multiple 
// DVD/CD readers attached, so you need to specify which one you care about 
NSDictionary * status = [myDiscRecordingDevice status]; 
NSString* state = [status objectForKey: DRDeviceMediaStateKey]; 

if ([state isEqualTo: DRDeviceMediaStateNone]) 
{ 
    if ([[status objectForKey: DRDeviceIsTrayOpenKey] boolValue]) 
     return trayOpen; 

    return noDisc; 
} 
+1

很好的回答。由於OP提到一個未解決的參考,您可能想要提醒他在項目中包含「DiscRecording.framework」。 – dasblinkenlight 2012-01-07 13:44:59

+0

它說:/Users/me/Desktop/Untitled/UntitledAppDelegate.m:27:0 /Users/me/Desktop/Untitled/UntitledAppDelegate.m:27:錯誤:'myDiscRecordingDevice'未申報(首次在此功能中使用) – user1104856 2012-01-07 13:52:23

+0

您需要在那裏修改我的示例代碼,以提供一個'DRDevice'對象(如果您的計算機掛接了多個DVD/CD驅動器,則可能有多個)。您也應該修改我的代碼以返回YES或NO,具體取決於托盤是打開還是關閉。 – 2012-01-07 13:54:28