gpt4 book ai didi

objective-c - CFStringTokenizerCopyBestStringLanguage 与 NULL 范围

转载 作者:行者123 更新时间:2023-12-03 16:37:03 33 4
gpt4 key购买 nike

我正在尝试使用CFStringTokenizerCopyBestStringLanguage。文档说:

The range of string to use for the test. If NULL, the first few hundred characters of the string are examined.

但是传递NULL会产生错误:

Passing 'void *' to parameter of incompatible type 'CFRange'

正确的做法是什么?


NSString *语言 = (NSString *)CFBridgingRelease(CFStringTokenizerCopyBestStringLanguage((CFStringRef)text, NULL));

最佳答案

它看起来像是文档中的错误。

NULL 通常定义为类似

#define NULL ((void*)0)

所以它是一个指针。

另一方面,CFRange 定义为

struct CFRange {
CFIndex location;
CFIndex length;
};
typedef struct CFRange CFRange;

所以它是一个结构体,即非指针类型。

结构体不能分配给 NULL,因为它们具有不兼容的类型,因此从技术上讲,CFRange 不能为 NULL

回到您的具体问题,您可能想做类似的事情

CFStringRef text = //your text
CFRange range = CFRangeMake(0, MIN(400, CFStringGetLength(text)));
NSString *language = (NSString *)CFBridgingRelease(CFStringTokenizerCopyBestStringLanguage(text, range));

我从documentation开始选择了400个州

Typically, the function requires 200-400 characters to reliably guess the language of a string.

<小时/>

更新

我向 Apple 报告了该错误。

关于objective-c - CFStringTokenizerCopyBestStringLanguage 与 NULL 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19038687/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com