Come sostituire vecchia ParamText / StandartAlert con più recenti sostituzioni CFString?
Domanda
ParamText()
è un davvero vecchio modo di sostituzione di parametri in una stringa che si basa su stringhe Pascal. Inoltre non è abbastanza StandardAlert
Unicode pronto.
La nuova finestra di messaggio (non così nuovo) la sostituzione è CFUserNotificationDisplayNotice
ma questo si aspetta CFString
e ho scoperto che se sto per passare ad usare CFString io non sono in grado di utilizzare più ParamText la sostituzione del parametro.
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 );
ho scoperto che ParamText
non funziona con le nuove finestre di dialogo più e che Apple ha dimenticato di specificare come usarli.
C'è qualche sostituzione a disposizione che non mi richiederebbe di modificare il formato di parametri originali in stringhe?
Soluzione
mi sono trovato una soluzione, ma io non sono molto soddisfatto di esso.
CMutableStringRef alertString2;
...
alertString2 = CFStringCreateMutableCopy(NULL, CFStringGetLength(alertString), alertString);
CFStringFindAndReplace( alertString2,
CFSTR("^2"),
minRange, // another CFString
CFRangeMake(0, CFStringGetLength(alertString2)),
0);