Длинный без знака, символ без знака в Цели С до Свифта - PullRequest
0 голосов
/ 07 июля 2019

Я меняю проект Objective C на проект Swift. В цели C я использовал unsigned long, Unsigned char.

const char * bytesIn = [self bytes];
unsigned long bytesLength = range.location + range.length;
unsigned long   bytesOffset = range.location;
NSMutableData * dataOut = [NSMutableData data];

BOOL currIsEOF = NO;
unsigned char currChar;         /* current character */
unsigned char charBuf[MAX_READ];    /* buffer of already read characters */
int count;                       /* number of characters in a run */

/* prime the read loop */
currChar = bytesIn[bytesOffset];
bytesOffset = bytesOffset + skip;
count = 0;

Код выше. Кто-нибудь может помочь изменить это на Swift. В Swift, насколько я понимаю, нет const char

1 Ответ

0 голосов
/ 07 июля 2019

Ваш фрагмент кода выглядит как часть большой функции, которая извлекает некоторые байты из объекта NSData.Swift предоставляет Data, который соединяется с NSData и предоставляет целый ряд функций для управления байтовыми буферами Swift коллекций.Вы должны взглянуть на более крупную функцию, из которой взят ваш фрагмент, и переделать алгоритм, используя функции, предоставляемые Data.

BTW Swift предоставляет типы без знака, по некоторым причинам он рассматривает их как Числовое значение специального назначенияТипы , а также предоставляет псевдонимы типов, названные в честь типов C, см. Совместимость C .Так что, если у вас есть алгоритмы, которые используют типы без знака и / или код Objective-C для них, вы можете написать / перевести их в Swift - действительно, кажется, что результат будет «особенным» для Swift, когда числа без знака действительно натуральный ; -)

...