Я пытаюсь преобразовать унаследованную функцию Objective-C в Swift и работать с некоторыми блокпостами с ней. Вот функция Objective-C -Преобразование строки Swift в UTF-8 и выполнение арифметики с использованием значения ASCII символа
- (SHCardType)cardType:(NSString *)cardNum {
if (cardNum.length <= 0) {
return SHCTUnknown;
}
const char *s = [cardNum UTF8String];
if (sizeof(cardTypes[0]) == 0) {
return SHCTUnknown;
}
int cardsCount = sizeof(cardTypes)/sizeof(cardTypes[0]);
for (int i = 0; i < cardsCount; i++) {
int dig = log10(cardTypes[i].max) + 1;
int n = 0;
for (int j = 0; j < dig; j++) {
n = n * 10 + (s[j] - '0');
}
if ((cardTypes[i].min <= n) && (n <= cardTypes[i].max)) {
SHCardType cardType = cardTypes[i].cardType;
int numLength = 16;
if (cardType == SHCTAmericanExpress) {
// Length is 15. Should confirm its type before all card number is entered.
return cardType;
} else if (cardType == SHCTDinersClubCarteBlanche || cardType == SHCTDinersClubenRoute || cardType == SHCTDinersClubInternational || cardType == SHCTDinersClubUnitedStatesCanada) {
numLength = 14;
}
// For DinersClubCarteBlanche card, the length may be 16.
if (numLength == cardNum.length || cardType == SHCTDinersClubCarteBlanche || cardType == SHCTDinersClubInternational) {
return cardType;
}
}
}
return SHCTUnknown;
}
Пару строк У меня возникают проблемы с поиском эквивалент Свифта как для
const char *s = [cardNum UTF8String];
Есть ли Swift функция я могу использовать, чтобы преобразовать строку в UTF -8
n = n * 10 + (s[j] - '0');
Как представить символ «0» в строке «Быстро». Могу ли я использовать операнд «-»?
Любые указатели будут оценены по достоинству.
Вы пробовали автоматическое преобразование, предлагаемое в Xcode 7? –
@AidanGomez Этот инструмент только преобразует Swift 1 в Swift 2, он не переводит Objective-C ... – Moritz
также есть некоторые веб-инструменты (например, http://iswift.org/try), вопрос также в том, почему сделайте это на первом месте, так как вы легко можете вызвать код Objective-C из swift ... – PetrV