我有一个是cfstringref的变量,我执行检查以确保它不是1个特定值。如果是,那么我想将其设置为nsstring等效于@“

这是代码

CFStringRef data = = CFDictionaryGetValue(dict, kABPersonAddressStateKey);

NSComparisonResult result = [(NSString *)data compare:element options:compareOptions];
if(NSOrderedAscending == result) {
    // Do something here...
}
else if (NSOrderedSame == result) {
    // Do another thing here if they match...
    data = "";
}
else {
    // Try something else...
}
. 所以在如果在其他块中,我想将它设置为“”但是Xcode警告我是无效的指针类型。

有帮助吗?

解决方案

cfstringref是不可变的对象,因此您必须使用不同的值创建新实例:

data = CFStringCreateWithCString (NULL, "", kCFStringEncodingUTF8);
.

并记住您需要释放该值。

但由于CFStringRef和NSStrings类型是免费桥接,您可以在代码中使用NSString(这可能会更容易理解并稍后支持它):

NSString *data = (NSString*)CFDictionaryGetValue(dict, kABPersonAddressStateKey);

NSComparisonResult result = [(NSString *)data compare:element options:compareOptions];
if(NSOrderedAscending == result) {
    // Do something here...
}
else if (NSOrderedSame == result) {
    // Do another thing here if they match...
    data = @"";
}
else {
    // Try something else...
}
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top