CFStringRef将值设置为“”

时间:2011-05-12 12:29:58

标签: ios ios4 nsstring cfstring

我有一个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...
}

所以在if else块中,我想将它设置为“”但是Xcode警告我它是一个无效的指针类型。

1 个答案:

答案 0 :(得分:3)

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...
}