将CFStringRef转换为NSString

时间:2014-10-10 14:11:40

标签: objective-c macos cocoa

我试图从主要包中检索一些信息:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {    
    CFStringRef bundleVer = CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
    NSString *appVersion = (__bridge NSString *)bundleVer;
}

我可以得到CFStringRef(在调试中我可以看到与变量关联的正确值),但是当我尝试将它转换为NSString时,我的appVersion变量有" null"价值(以前是零)。

我做错了什么?

我正在使用ARC。

编辑:我的项目似乎有问题,即使使用简单的静态赋值也无法分配每个NSString对象,测试变量的值为(null)

NSString *test = @"";

2 个答案:

答案 0 :(得分:1)

  CFStringRef boundleVer = CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
  NSString *appVersion = (__bridge NSString *)(boundleVer);

它的工作风度在我身边,它正在返回“2”

答案 1 :(得分:0)

我会使用该代码而不是您当前的代码来获取相同的信息:


NSString *_shortVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];

NSString *_version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];

注意:我不确定您最终需要哪些信息。