【问题标题】:Convert a CFNumberRef to NSInteger将 CFNumberRef 转换为 NSInteger
【发布时间】:2013-04-10 08:24:41
【问题描述】:
#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 转换为 NSInteger, 我一次又一次地尝试,但随时都有 “从指针生成整数而不进行强制转换”

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

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

@end   

【问题讨论】:

    标签: objective-c nsinteger cfnumberref


    【解决方案1】:

    使用这个:

    //假设你想将 wol 转换为 NSNumber,然后再转换为 NSInteger

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

    *注意:你很少需要一个 NSInteger 指针。在您的情况下,您可以很容易地使用 NSInteger。另外你需要把方法改成- (NSInteger)checkWakeOnLan

    【讨论】:

      猜你喜欢
      • 2011-09-21
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      • 2011-12-04
      • 2015-05-30
      相关资源
      最近更新 更多