Как заменить старый ParamText/StandartAlert новыми заменами CFString?
Вопрос
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 забыла указать, как их использовать.
Есть ли какая-либо замена, которая не потребовала бы от меня изменения исходного формата параметров в строках?
Решение
Я нашел решение, но оно меня не совсем устраивает.
CMutableStringRef alertString2;
...
alertString2 = CFStringCreateMutableCopy(NULL, CFStringGetLength(alertString), alertString);
CFStringFindAndReplace( alertString2,
CFSTR("^2"),
minRange, // another CFString
CFRangeMake(0, CFStringGetLength(alertString2)),
0);
Не связан с StackOverflow