2009-10-16 73 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]; 
相關問題