2013-04-10 2 views
1
#import "someClass.h" 

@implementation someClass 

- (NSInteger *)checkWakeOnLan { 
    SCDynamicStoreRef ds = SCDynamicStoreCreate(kCFAllocatorDefault, CFSTR("myapp"), NULL, NULL); 
    CFDictionaryRef dr = SCDynamicStoreCopyValue(ds, CFSTR("State:/IOKit/PowerManagement/CurrentSettings")); 
    CFNumberRef wol=CFDictionaryGetValue(dr, CFSTR("Wake On LAN")); 
    CFRelease(dr); 
    CFRelease(ds); 
여기

내 문제에 CFNumberRef 변환, 어떻게 또 다시 tryed하지만 언제 가지고 , NSInteger에 CFNumberRef 변환이 NSInteger

NSInteger *value = [... ?]; 
    return value; 
} 

- (IBAction)doStuff:(NSButton *)sender { 
    [myBevelButton setState:[self checkWakeOnLan]]; //setState takes NSInteger 
    //myBevelButton defined elsewhere, shows different icons 
} 

@end 

답변

2

사용이 "캐스트없이 포인터에서 정수를 만든다" :

// 당신이의 NSNumber에 WOL을 변환 할 다음 NSInteger

NSNumber *nsnumber = (NSNumber*)wol; 
NSInteger value = [nsnumber integerValue]; 
가정

* 참고 : 거의 NSInteger 포인터가 필요하지 않습니다. 귀하의 경우에는 NSInteger를 쉽게 사용할 수 있습니다. 또한 방법을 변경해야합니다. - (NSInteger)checkWakeOnLan

+0

감사합니다. 너무 쉬워요! :) –

+0

예, 오류 설명을 이해할 필요가 있습니다. :) –