KCFCompareEqualTo не доступен в Swift?

Я пытаюсь получить номер телефона человека в моем списке контактов, и у меня возникают проблемы при сравнении двух CFStrings, потому что мне кажется, что свойство kCFCompareEqualTo не доступно в swift

В ObjectiveC вы можете сделать что-то вроде:

ABMultiValueRef phonesRef = ABRecordCopyValue(person, kABPersonPhoneProperty);

for (int i=0; i < ABMultiValueGetCount(phonesRef); i++) {
    CFStringRef currentPhoneLabel = ABMultiValueCopyLabelAtIndex(phonesRef, i);
    CFStringRef currentPhoneValue = ABMultiValueCopyValueAtIndex(phonesRef, i);

    if (CFStringCompare(currentPhoneLabel, kABPersonPhoneMobileLabel, 0) == kCFCompareEqualTo) {
        [contactInfoDict setObject:(__bridge NSString *)currentPhoneValue forKey:@"mobileNumber"];
    }

И я попробовал что-то вроде этого:

    var phoneRef :ABMultiValueRef = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue()
    var i = 0
    for i ; i < ABMultiValueGetCount(phoneRef) ; i++ {

        var currentPhoneLabel : CFString = ABMultiValueCopyLabelAtIndex(phoneRef, i).takeRetainedValue()
        var currentPhoneValue : CFString = ABMultiValueCopyValueAtIndex(phoneRef, i).takeRetainedValue() as CFString

        if ( CFStringCompare(currentPhoneLabel, kABPersonPhoneMobileLabel, 0) == ???)  {

        }

    }

Подскажите, пожалуйста, как это исправить?

Редактировать: я попробовал это, и на данный момент это не сбой

var smth = CFStringCompare(currentPhoneLabel, kABPersonPhoneMobileLabel,CFStringCompareFlags.CompareCaseInsensitive) as CFComparisonResult
if  smth == CFComparisonResult.CompareEqualTo   {

}

2 ответа

Правильная реализация:

if (CFStringCompare(mediaType as CFString, kUTTypeImage, .CompareCaseInsensitive) == CFComparisonResult.CompareEqualTo ){

}

Попробуй это:

if ( CFStringCompare(currentPhoneLabel, kABPersonPhoneMobileLabel, 0) == CFComparisonResult.CompareEqualTo)  {

}

Надеюсь это поможет..:)

Другие вопросы по тегам