NSString compare:options:range: - 没有选项应该传哪个值?

8
我希望调用[NSString compare:options:range:]方法,并且不传选项参数。
那么应该给选项参数提供什么值呢?
无论是使用nil还是NULL,在Xcode中都会产生警告:"不兼容指针转换,将'void *'发送到类型为...的参数"。

没有选项,你根本不需要这样做。 - sidyll
并不是真的 - 我确实想为范围参数提供一个值。 - Marin Todorov
3个回答

9

只需传递0。或者,如果您对Mac有一定的了解,您可能会发现自己传递了kNilOptions,它只是0的另一个名称,但意味着相关的标志。


有趣,我以前从未遇到过这种情况。看起来它旨在与“OptionBits”参数一起使用,当然,这是一种已经不再使用的类型。 - Lily Ballard
再转几圈。;p - Jonathan Grynspan
我认为这个常量的命名方式只是表达了我想传递的值,我非常喜欢它 :) - Marin Todorov

2

你应该传递0options参数是一个位掩码,实际上只是一个整数。这也是为什么警告说“整数转换”的原因。


是的 - 那很有道理...我只是固执地想着过去我曾经在那里放置了NULL。 - Marin Todorov
如果你使用命令+单击方法来查看其声明,然后再命令+单击options参数的类型,你会发现它通常只是NSUInteger的一个typedef。 - Lily Ballard

-1

正如苹果文档所述:

搜索选项 - 您可以使用 C 位或运算符组合以下任何选项:NSCaseInsensitiveSearch、NSLiteralSearch、NSNumericSearch。有关这些选项的详细信息,请参见字符串编程指南。

NSCaseInsensitiveSearch:不区分大小写的搜索。

NSLiteralSearch:精确的逐字符等价。

NSNumericSearch:在字符串中比较数字值,即 Name2.txt < Name7.txt < Name25.txt。

字符串编程指南


这并不回答我的问题,当然我首先查看了文档。 - Marin Todorov
你为什么没有传递这些参数之一? - Nekto
@Nekto:您可能需要重新阅读原帖的问题。他不想要任何参数,而是想知道该传递什么来指示没有参数。 - Lily Ballard
正确的做法是使用预定义的常量,因为当苹果公司将它们重新定义为其他值时,会捕获到一个错误。 - Nekto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接