Как получить тип токена из CFStringTokenizer в Какао? - PullRequest
1 голос
/ 09 мая 2009

Документация CFStringTokenizer содержит два конфликтующих оператора в CFStringTokenizerAdvanceToNextToken ():

CFStringTokenizerAdvanceToNextToken

...

Возвращаемое значение

Тип токена, если токенизатору удалось найти токен и установить его в качестве текущего токена. Возвращает kCFStringTokenizerTokenNone, если токенизатору не удалось найти токен. Возможные значения см. В разделе «Типы токенов».

...

Если токен найден, он устанавливается как текущий токен, и функция возвращает true; в противном случае текущий токен становится недействительным, а функция возвращает false.

Первый абзац (возвращающий тип токена) - это то, что я хотел бы увидеть: он позволяет, например, проверить, состоит ли токен полностью из не алфавитно-цифровых символов. Тем не менее, второй абзац (возвращающий истину или ложь) кажется тем, что на самом деле происходит.

Есть идеи, почему это будет, или как обойти это?

Ответы [ 3 ]

1 голос
/ 09 мая 2009

В комментарии к заголовку не упоминается возвращение true или false, и когда заголовок и онлайн-документы не согласны, часто это правильный заголовок.

В простом тесте я могу получить значения, отличные от 0 и 1, поэтому проблема, с которой вы сталкиваетесь, может быть более конкретной; Вы можете опубликовать пример кода, который не работает?

0 голосов
/ 27 февраля 2013

Если вам нужна возможность игнорировать токены типа CFNumber, то вы можете использовать:

while (tokenType != kCFStringTokenizerTokenNone) {
    if ( (tokenType & kCFStringTokenizerTokenHasHasNumbersMask) == 0) { // ignore numbers
        range = CFStringTokenizerGetCurrentTokenRange(tokenizer);
        NSString *token = [string substringWithRange:NSMakeRange(range.location, range.length)];
        [tokensArray addObject:token];
    }
    tokenType = CFStringTokenizerAdvanceToNextToken(tokenizer);
}
0 голосов
/ 09 мая 2009

Возможно, они имели в виду «истина» и «ложь» в более широком смысле «ненулевой» и «ноль». Если он находит токен, функция возвращает kCFStringTokenizerTokenNormal (что равно 1) или некоторую комбинацию масок (в любом случае, ненулевое / «истина»). Если это не так, функция возвращает kCFStringTokenizerTokenNone (что равно нулю / «ложь»).

Это, конечно, нечеткий язык, поэтому, пожалуйста, сообщите об ошибке документации на Apple Bug Reporter .

...