2010-11-27 119 views
0
NSRange rangetxt={0,(index-1)}; 
NSString *tempStr= textBox.text; 
NSString *tempTextBox=[tempStr substringWithRange:rangetxt]; 

大家好,的NSString問題

我想知道爲什麼我貼的代碼不能正常工作,當編譯器通過substringWithRange它掛起來,不要將任何值賦給tempTextBox,其次我已經嘗試NSString函數substringToIndex以及它不工作,我的目標是跳過最後一個字符,而複製tempStrtempTextBox

問候 MGD

回答

1

您不顯示正在初始化的代碼index。我的猜測是超出範圍。請注意,如果範圍的任何部分超出接收器的末端,substringWithRange會提高NSRangeException

試試這個:「超時取數據變動顯示可能是不準確的」

NSString *tempStr = textBox.text; 
NSRange rangetxt; 
if ([tempStr length] > 0) 
    rangetxt = NSMakeRange(0, [tempStr length] - 1); 
else 
    rangetxt = NSMakeRange(0, 0); 
NSString *tempTextBox = [tempStr substringWithRange:rangetxt]; 
2

您應該使用NSMakeRange(loc, len)創建NSRange對象,而不是使用{}

+0

不,先生,NSMakeRange心不是工作 – MGD 2010-11-27 22:48:29

+0

你可能也想在Xcode中做「乾淨的目標」。可能會造成一些混亂的構建緩存。 – BastiBen 2010-11-27 22:54:09

+0

哇...一個很好的答案... – Klose 2010-11-29 12:10:46

2

我有測試此代碼,它的工作原理:

NSString *strTest = @"Word"; 
NSRange range = {0, 3}; 
NSString *strTemp = [strTest substringWithRange: range]; 

結果:strTemp =「義和」

所以問題是別的東西:指標不正確或textBox.text也許是空的。

將斷點放在substringWithRange:行上,並在問題出現之前查看index和tempStr的值。

0

我覺得我有我的問題解決了,在調試時,我通過這些線我的gdb的說,所以我找到了解決方案只是把我的破發點的NSString初始化後的對象

感謝大家有所幫助

MGD