Comment remplacer l'ancien ParamText / StandartAlert avec les nouveaux remplacements de CFString?
Question
ParamText()
est un moyen vraiment vieux de remplacer les paramètres dans une chaîne qui est basée sur des chaînes Pascal. Aussi StandardAlert
est pas tout à fait prêt Unicode.
La nouvelle boîte de message (pas nouveau) de remplacement est CFUserNotificationDisplayNotice
mais celui-ci attend CFString
et je trouve que si je suis sur le point de passer à l'aide CFString Je ne suis pas en mesure d'utiliser le paramètre ParamText de remplacement plus.
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 );
J'ai découvert que ParamText
ne fonctionne pas avec les nouvelles boîtes de dialogue plus et que Apple a oublié de spécifier comment les utiliser.
Y at-il de remplacement disponible qui ne me obliger à modifier le format des paramètres d'origine dans les chaînes?
La solution
Je me suis trouvé une solution mais je ne suis pas très heureux à ce sujet.
CMutableStringRef alertString2;
...
alertString2 = CFStringCreateMutableCopy(NULL, CFStringGetLength(alertString), alertString);
CFStringFindAndReplace( alertString2,
CFSTR("^2"),
minRange, // another CFString
CFRangeMake(0, CFStringGetLength(alertString2)),
0);