2011-07-28 9 views
0

次のコード行でmapkitを使用して、タイトルと字幕を設定しようとしています。 textItems配列には2つの文字列があります。NSArrayから注釈への文字列、mapkit

NSArray *textItems = [searchString componentsSeparatedByString:@","]; 

addAnnotation = 
[[AddressAnnotation alloc] initWithCoordinate:location 
             mTitle:[[textItems objectAtIndex:0] stringValue] 
            mSubTitle:[[textItems objectAtIndex:1] stringValue]]; 

「addAnnotation」に達するとアプリが停止します。

mTitle:[[textItems objectAtIndex:0] stringValue]をmTitle:@"test"に変更すると正常に動作します。デバッグすると、textItems配列のデータが存在することがわかります。

アイデア?

ありがとうございました。

+0

nslog textitems arrayとobjectatindex o –

答えて

1

componentsSeparatedByStringメソッドは、NSStringオブジェクトの配列を返します。あなたが「認識されないセレクター」エラーを取得しなければならないNSString - あなたはそれらのオブジェクトにstringValueしかしstringValue呼び出している

NSNumberオブジェクトに適用されます。

stringValueへの呼び出しを削除します。

addAnnotation = [[AddressAnnotation alloc] initWithCoordinate:location 
    mTitle:[textItems objectAtIndex:0] 
    mSubTitle:[textItems objectAtIndex:1]]; 

配列が0または1のみを返す場合しかし、まだ配列にそれらのインデックスにアクセスする前に、カウントをチェックして、デフォルト値を使用して良いでしょうオブジェクト。

+0

@Anneありがとうございました - それが問題でした。 NSString Class Referenceをチェックしておく必要があります。 – Lysgaard

1

投稿した1行目と2行目の間にブレークポイントを設定します。そこに着いたら、コンソールに行き、 "po textItems"と "po [textItems count]"とタイプしてください。彼らは、配列と配列内のオブジェクトの数をそれぞれ出力します。少なくとも、配列内のオブジェクトの数が期待どおりであることを確認するチェックです。