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) {
}
Надеюсь это поможет..:)