2012-01-07 36 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