0

アプリを iOS5 から iOS6 に移行しています。アプリの一部で、ユーザーが画面下部の uitabbarviewcontroller からタブを選択すると、uitableview に移動します。ユーザーがタブを選択すると、コードは Web サービスを呼び出し、CoreData と共に保存され、デバイス自体に保持されているデータに添付されている最新の情報を一覧表示します。

とにかく、私はcellForRowAtIndexPathWebサービスの応答から文字列を作成し、セルのdetailTextLabelのテキストプロパティをこの文字列の値に設定します。

これは iOS5 では問題になりませんでした。メソッドでこの文字列を使用しようとするとcellForRowAtIndexPath、コンパイラは文字列が実際にはNSIndexPath変数であると考えているようです。

たとえば、文字列の長さを確認しようとすると、アプリがクラッシュし、次のようなメッセージが表示されます。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSIndexPath length]: unrecognized selector sent to class 0x396cae64'

同様に、そのメソッドの文字列でやりたいことは他にもあります。

その他のいくつかのこと:

  1. シミュレーターとデバイスの両方で発生します。
  2. 文字列自体とは何の関係もありません。つまり、iOS5 がまだインストールされているデバイスでも問題なく動作します。また、detailTextLabel.text を、文字列の設定に使用している値に設定できます。文字列を明示的に使用することはできません。

他の誰かがこれに出くわしましたか? もしそうなら、あなたの解決策は何でしたか? グーグルで検索しましたが、何も表示されませんでした。

4

1 に答える 1

0

その文字列をコピーしてから使用してください。

最初にその文字列を次のようにコピーします

NSString *strTemp=[[NSString stringwithformat:@"%@",yourstring]copy];

使用したい場所で strTemp を使用してみてください。

于 2012-10-31T09:22:16.320 に答える