2009-10-16 74 views
2

这可能是一个天真的问题,但是,如何获得NSTextFieldstringValue的长度?我试图如何获取NSTextField的stringValue的字符串长度?

int len = strlen((char *)[textField stringValue]); 

其中textFieldNSTextField,但它总是返回6(指针的大小?)。除此之外,我确信有更多的Objective-C方式来做我所追求的。

+1

当你使用'strlen'(即在C字符串),你应该使用'size_t'类型来保存它的返回值。至少,这是一个无符号类型,而'int'(不是其他限定)被签名。当返回值超出签名类型的正范围时,这将变得很重要,这会将其放在负范围内,并使比较表达式失败。 – 2009-10-18 10:27:02

回答

9

NSString documentation

NSUInteger length = [[textField stringValue] length]; 

在这里实现了关键的东西是一个NSString不是一个char *。要获得真正的C风格字符*,您需要执行如下操作:

const char* ptr = [[textField stringValue] 
    cStringUsingEncoding:[NSString defaultCStringEncoding]]; 

更新为使用默认编码而不是假定ASCII。

+0

只是挑剔,但使用NSASCIIStringEncoding比简单地传递一个零会更危险,这会给你默认的编码。 不管,+1 – kent 2009-10-16 15:11:27

+0

好点。我没有发现任何地方记录的东西,所以我走了明确的路线。 – nall 2009-10-16 17:52:23

2

stringValue是NSString实例。 您可以使用下面的代码:

NSUInteger len = [[textField stringValue] length];