相当于CFStringRef的+ [NSString stringWithContentsOfURL:usedEncoding:error:]

时间:2012-05-23 07:46:12

标签: objective-c c core-foundation

我想知道什么是相当的 CoreFoundation中的+[NSString stringWithContentsOfURL:usedEncoding:error:]

我知道这次我可以使用(__bridge NSString *)这件事我觉得我的生活有点复杂,并且在Cocoa出来之前了解了一下这是怎么回事......:)

根据我的喜好,在objective-c中有几行可以制作一个东西

...
CFErrorRef error = NULL;
CFURLRef fileURL = CFBundleCopyResourceURL(bundle,
                                           CFSTR("file"),
                                           CFSTR("txt"),
                                           NULL);

// Ugly piece of objc code in my whole C source file :(
NSError *nsError = (__bridge NSError *)(error);
NSString *nsString = [NSString stringWithContentsOfURL:(__bridge NSURL *)fileURL
                                          usedEncoding:NULL
                                                 error:&nsError];

CFStringRef fileContents = (__brigde CFStringRef)nsString; 
...

1 个答案:

答案 0 :(得分:0)

您可以尝试使用

CFStringCreateFromExternalRepresentation

我会想象代码是这样的,

NSData *data = [NSData dataWithContentsOfFile:<path to your file>]
CFStringRef string = CFStringCreateFromExternalRepresentation(NULL, (CFDataRef)data, kCFStringEncodingUTF8);

理想情况下,要访问错误,您还可以使用NSData的dataWithContentsOfFile:options:error: