2010-11-27 50 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