Как заменить старый ParamText / StandartAlert новыми заменами CFString? - PullRequest
1 голос
/ 11 января 2010

ParamText() - это действительно старый способ замены параметров в строке, основанный на строках Паскаля.Кроме того, StandardAlert не совсем готов к Unicode.

Новое окно сообщения (не так уж новое) заменено на CFUserNotificationDisplayNotice, но оно ожидает CFString, и я обнаружил, что если я собираюсь переключиться наиспользуя CFString, я больше не могу использовать замену параметра ParamText.


Str255 alertString; // PascalString, yuck!
ParamText(NULL, NULL, minString, maxString);
localize( "A value between ^2 and ^3 is required.", &alertString );
StandardAlert( kAlertNoteAlert, (const unsigned char *)&alertString, nil, nil, &itemHit );

Я обнаружил, что ParamText больше не работает с новыми диалогами и что Apple забыла указать, как их использовать.

Существует ли какая-либо замена, которая не требовала бы от меня изменения исходного формата параметров в строках?

1 Ответ

1 голос
/ 11 января 2010

Я нашел себе решение, но я не совсем доволен этим.

<code>
CMutableStringRef alertString2;
...
alertString2 = CFStringCreateMutableCopy(NULL, CFStringGetLength(alertString), alertString);
CFStringFindAndReplace( alertString2, 
        CFSTR("^2"), 
        minRange,  // another CFString
        CFRangeMake(0, CFStringGetLength(alertString2)),
        0);
...