ما هي العلامات حول افتراضي كتاب إي فون كتاب ملصقات رقم الهاتف؟

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

  •  18-09-2019
  •  | 
  •  

سؤال

سؤالي يتعلق بتفاوض العلامات التي تحيط ببعض ملصقات رقم الهاتف الافتراضي في إدخالات الشخص في قائمة جهات الاتصال الموجودة على iPhone.

لقد قمت بإنشاء إدخال دفتر عناوين قائمة جهات اتصال iPhone لشخص، "John Smith" مع إدخالات رقم الهاتف التالية:

  • المحمول (604) 123-4567
  • iPhone (778) 123-4567
  • الصفحة الرئيسية (604) 789-4561
  • العمل (604) 456-7891
  • الرئيسية (604) 789-1234
  • ميغافون (234) 567-8990

لاحظ أن العلامات الخمس الأولى هي ملصقات افتراضية توفرها تطبيق جهات الاتصال والتسمية الأخيرة، "megaphone"، هي تسمية مخصصة.

كتبت الطريقة التالية لاسترداد وتظهر الملصقات وأرقام الهواتف لكل شخص في دفتر العناوين:

-(void)displayPhoneNumbersForAddressBook {
    ABAddressBookRef book = ABAddressBookCreate();
    CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(book);
    ABRecordRef record = CFArrayGetValueAtIndex(people, 0);
    ABMultiValueRef multi = ABRecordCopyValue(record, kABPersonPhoneProperty); 
    NSLog(@"---------" );
    NSLog(@"displayPhoneNumbersForAddressBook" );

    CFStringRef label, phone;
    for (CFIndex i = 0; i < ABMultiValueGetCount(multi); ++i) {
            label = ABMultiValueCopyLabelAtIndex(multi, i);
            phone = ABMultiValueCopyValueAtIndex(multi, i);
            NSLog(@"label: \"%@\"     number: \"%@\"", (NSString*)label, (NSString*)phone);
            CFRelease(label);
            CFRelease(phone);
    }
    NSLog(@"---------" ); 
    CFRelease(multi);
    CFRelease(people);
    CFRelease(book);
}

وهنا إخراج إدخال دفتر العناوين الذي أدخلته:

2010-03-08 13:24:28.789 test2m[2479:207] ---------
2010-03-08 13:24:28.789 test2m[2479:207] displayPhoneNumbersForAddressBook
2010-03-08 13:24:28.790 test2m[2479:207] label: "_$!<Mobile>!$_"     number: "(604) 123-4567"
2010-03-08 13:24:28.790 test2m[2479:207] label: "iPhone"     number: "(778) 123-4567"
2010-03-08 13:24:28.791 test2m[2479:207] label: "_$!<Home>!$_"     number: "(604) 789-4561"
2010-03-08 13:24:28.791 test2m[2479:207] label: "_$!<Work>!$_"     number: "(604) 456-7891"
2010-03-08 13:24:28.792 test2m[2479:207] label: "_$!<Main>!$_"     number: "(604) 789-1234"
2010-03-08 13:24:28.792 test2m[2479:207] label: "megaphone"     number: "(234) 567-8990"
2010-03-08 13:24:28.793 test2m[2479:207] ---------

ما هي أحرف العلامات

_$!< and >!$_

المحيطة أكثر، حفظ لفون، من التسميات الافتراضية ل؟

يمكنك توجيه لي إلى أين في "دليل برمجة دفتر العناوين لجهاز iPhone OS" يمكنني العثور على المعلومات؟

شكرا لك على مساعدتك.

هل كانت مفيدة؟

المحلول

أنا أركض في نفس المشكلة. هذا هو ما أعتقد حتى الآن.

تشير العلامة التي تشير إلى نظامك إلى النظام أن هذا هو ملصق افتراضي وليس تسمية مخصصة. إذا قمت بتشغيل هذا الرمز:
NSLog(kABOtherLabel);

سوف تقه هذه النتيجة:
_$!<Other>!$_

هذه هي القيمة المخزنة في kABOtherLabel ثابت (من النوع cfstringref). أعتقد السبب iPhone لا تملك العلامة حولها، حيث أصبحت تسمية "مخصصة"، لكنها واحدة نشأت بواسطة Apple بدلا من المستخدم.

يمكنك إعطاء الملصق أي قيمة تحبها، كما يتضح من الخاص بك megaphone تسمية أعلاه. لكن لاحظ أنه إذا حاولت إنشاء رقم هاتف (أو عنوان بريد إلكتروني) مع تسمية "أخرى" دون استخدام kABOtherLabel ثابت أو أنها القيمة _$!<Other>!$_, ، سوف يعتقد النظام أنك تقوم بإنشاء تسمية مخصصة. مثل في هذا المثال:

ABMultiValueAddValueAndLabel(email, @"nospam@notarealdomain.com", @"other", NULL);

وإذا ذهبت وتعديلها هذا إدخال دفتر العناوين على iPhone، فسيتم عرضه في قائمة منفصلة من الملصقات المخصصة. (لذلك سيكون هناك خياران ل "الآخر"، واحد في الإعدادات الافتراضية والآخر في الملصقات المخصصة)

في حين أن هذا لم يرد على سؤالك، آمل أن يساعد.

نصائح أخرى

هذا هو نفسه إلى حد كبير في الجديد الإطار CNContact التي حل محل abaddressbook كطريقة موصى بها للتعامل مع جهات الاتصال.

هناك ست ملصقات افتراضية توفرها Apple، والتي تتم الإشارة إليها ثوابت CNLABELLEDVAاليو الخاصة بالهاتف:

CNLabelPhoneNumberiPhone = "iPhone"
CNLabelPhoneNumberMobile = "_$!<Mobile>!$_"
CNLabelPhoneNumberMain = "_$!<Main>!$_"
CNLabelPhoneNumberHomeFax = "_$!<HomeFAX>!$_"
CNLabelPhoneNumberOtherFax = "_$!<OtherFAX>!$_"
CNLabelPhoneNumberPager = "_$!<Pager>!$_"

ضم او احتواء ال _$!< و >!$_ من المرجح أن تكون حوالي خمسة من هذه الثوابت على الأرجح علامة أن السلاسل يمكن تجميعها بواسطة نظام التشغيل، بالنظر إلى توفر الطريقة المحلية (forlabel :). وبعد أعتقد أن السبب لا يظهر هذا المحددات حول iPhone لأن Apple لا توضيح iPhone، والذي يتم عرضه ك "iPhone" بجميع اللغات.

السلوك المعقول هو إخفاء هذه عند عرض السلسلة، والتي تحدث باستخدام localizedString(forLabel:), ، مواصلة تخزين هذه المحددين بالسلسلة إذا كان تحرير الإدخال، وقم بتعيين أي ملصق تم إنشاؤه على المستخدمين لهذه السلاسل حيث كانت تسمية مخصصة مساوية للجسم الرئيسي لهذه، أي، المحمول، الرئيسية، النداء، وهلم جرا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top