1

CFStringTokenizerのドキュメントには、CFStringTokenizerAdvanceToNextToken()に2つの競合するステートメントがあります。

CFStringTokenizerAdvanceToNextToken

..。

戻り値

トークナイザーがトークンを見つけて現在のトークンとして設定することに成功した場合のトークンのタイプ。トークナイザーがトークンを見つけられなかった場合、kCFStringTokenizerTokenNoneを返します。可能な値については、「トークンタイプ」を参照してください。</ p>

..。

トークンが見つかった場合、それは現在のトークンとして設定され、関数はtrueを返します。それ以外の場合、現在のトークンは無効になり、関数はfalseを返します。

最初の段落(トークンタイプを返す)は、私が見たいものです。たとえば、トークンが完全に英数字以外の文字で構成されているかどうかを確認できます。ただし、2番目の段落(trueまたはfalseを返す)は実際に起こっていることのようです。

なぜそうなるのか、それを回避する方法はありますか?

4

3 に答える 3

1

ヘッダーのコメントでは、trueまたはfalseを返すことについては言及されていません。ヘッダーとオンラインドキュメントが一致しない場合、正しいヘッダーであることがよくあります。

簡単なテストでは、0と1以外の戻り値を取得できるため、発生している問題はより具体的である可能性があります。失敗しているサンプルコードを投稿できますか?

于 2009-05-08T23:48:43.637 に答える
0

探しているのが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);
}
于 2013-02-27T07:34:43.040 に答える
0

「非ゼロ」と「ゼロ」という広い意味での「真」と「偽」を意味していた可能性があります。トークンが見つかった場合、関数はkCFStringTokenizerTokenNormal(1 である) またはマスクの組み合わせを返します (ゼロ以外/「真」のいずれか)。そうでない場合、関数は戻りますkCFStringTokenizerTokenNone(これはゼロ/「false」です)。

ただし、これは確かにあいまいな言葉なので、Apple Bug Reporterでドキュメンテーション バグを報告してください。

于 2009-05-09T02:27:40.867 に答える