1

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 は無効なポインター型であると警告します。

4

1 に答える 1

4

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...
}
于 2011-05-12T12:47:19.037 に答える