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

こんにちは皆、第二に、私はきた私は、コンパイラはそれがハングアップしてtempTextBoxに任意の値を割り当てないsubstringWithRangeを通過したときに、私の貼り付けのコードは、正常に動作していない理由を知りたいNSStringの問題

、 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]; 
+1

返信いただきありがとうございます。インデックスではそれはそれ以外の場合にはうまくいきます私は自分のコードが間違っています私は間違ってどこに行っていないと思います:( – MGD

+0

ここであなたのコードのいくつかの部分を貼り付けて指で指すことができますか? – Prcela

+0

NSRangeMake'は ' NSMakeRange'。 – jrdioko

2

代わり{}を用いNSRangeオブジェクトを作成するNSMakeRange(loc, len)を使用すべきです。

+0

んサーオブジェクト後、NSMakeRangeは作業イマイチ私のブレークポイントを配置しましたtoo – MGD

+0

Xcodeで「クリーンターゲット」を実行することもできます。いくつかのビルドキャッシュが乱れることがあります。 – BastiBen

+0

うわー...偉大な答え... – Klose

2

私はこのコードのテストを持っていたし、それは動作します:

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

結果を:strTemp =「WOR」

だから問題は何か他のものである:インデックスが適切ではありませんかtextBox.textは多分空であります。

問題が発生する前に、substringWithRange:行にブレークポイントを置き、indexとtempStrの値を確認します。

+0

あなたの返信をありがとう、しかし、私は範囲外のインデックスをチェックしました私はなぜそれが動作しない理由はありません – MGD

0

私は私は私のGDBは言うこれらのラインを通過したときに、私は私の問題は、デバッグ時には、解決してしまったと思うので、私が見つけた「データをフェッチタイムアウトしまし可変表示が不正確になることがあります。」解決策はただのNSStringの初期化は、ヘルプみんなの

おかげ

MGD

関連する問題