كيفية استبدال ParamText / standartalert القديمة مع بدائل CFSTRING أحدث؟

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

  •  19-09-2019
  •  | 
  •  

سؤال

ParamText() هي طريقة قديمة حقا لاستبدال المعلمات في سلسلة تعتمد على سلاسل Pascal. ايضا StandardAlert ليس تماما يونيكود جاهزة.

صندوق الرسائل الجديد (ليس جديدا جدا) 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