Как заменить старый ParamText/StandartAlert новыми заменами CFString?

StackOverflow https://stackoverflow.com/questions/2042535

  •  19-09-2019
  •  | 
  •  

Вопрос

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);

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top