2009-05-08 9 views
1

CFStringTokenizerのドキュメントが)(CFStringTokenizerAdvanceToNextTokenに相反する2つのステートメントがありますCocoaのCFStringTokenizerからトークンタイプを取得するには?

CFStringTokenizerAdvanceToNextToken

...

戻り値

トークンの種類トークナイザ場合トークンを見つけて現在のトークンとして設定することに成功しました。 tokenizerがトークンの検索に失敗した場合は、kCFStringTokenizerTokenNoneを返します。可能な値については、トークンが見つかった場合、それは現在のトークンとして設定され、関数がtrueを返した...

を「トークンタイプ」

を参照してください。それ以外の場合、現在のトークンは無効になり、関数はfalseを返します。

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

それがどうしていいのか、それとも回避するのかについてのアイデアはありますか?

答えて

1

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

単純なテストでは、0と1以外の戻り値を得ることができるので、見ている問題はより具体的かもしれません。あなたは失敗しているサンプルコードを投稿できますか?

0

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

確かにあいまいな言語ですので、Apple Bug Reporterのドキュメントのバグを報告してください。

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); 
} 
関連する問題