2011-12-28 5 views
0

このコード行を有効にする(コメントを外す)と、SIGABRTクラッシュが発生します。これは以前はこの問題がなかったので、私にとっては奇妙です。これはなぜエラーを生成するのですか?ゴーストNSArray?

cell.textLabel.text = [[annotations objectAtIndex:indexPath.row] title]; 

私が手にエラーがある:

2011-12-28 14:03:00.118 MapWithTableModalView-001 [2006:11603]ローカライズされた名前のデータベースが存在しない 2011-12-28 14 :03:01.110 MapWithTableModalView-001 [2006:11603]キャッチされない例外により 'NSRangeException'、理由にアプリを終了*: '* - [__ NSArrayM objectAtIndex:]:空の配列の境界を越えてインデックス0'

Pメッセージはエラーや警告を生成しません。

このプロジェクトは、2つのUIViewControllerをベースにしています。これらのUIViewは、ボタン(ModalViewContoller)を介して上下にスライドします。ボタンを押すと、クラッシュが発生します。

チュートリアルの一部ですが、まだ得たいです:-)これは通常の配列のようには見えませんが、データはプロジェクトのように設定されています。私がこれを理解したら、それをPlistに設定したいと思います。あなたが任意の追加コードをポストするために私をご希望の場合

-(void)loadOurAnnotations 
    { 
CLLocationCoordinate2D workingCoordinate; 


    #pragma mark - Apple Stores 
workingCoordinate.latitude = 51.514298; 
workingCoordinate.longitude = -73.973034; 
iCodeBlogAnnotation *appleStore1 = [[iCodeBlogAnnotation alloc]  initWithCoordinate:workingCoordinate]; 
    [appleStore1 setTitle:@"Apple Store 5th Ave."]; 
[appleStore1 setSubtitle:@"Apple's Flagship Store"]; 
[appleStore1 setAnnotationType:iCodeBlogAnnotationTypeApple]; 

[viewController.mapView addAnnotation:appleStore1]; 

workingCoordinate.latitude = 51.514298; 
workingCoordinate.longitude = -0.141949; 
iCodeBlogAnnotation *appleStore2 = [[iCodeBlogAnnotation alloc] initWithCoordinate:workingCoordinate]; 
[appleStore2 setTitle:@"Apple Store St. Regent"]; 
[appleStore2 setSubtitle:@"London England"]; 
[appleStore2 setAnnotationType:iCodeBlogAnnotationTypeApple]; 

[viewController.mapView addAnnotation:appleStore2]; 



    } 

は、私は幸せだろうが、私はもう見て、したがって、本当に便利であることを掲示するためにどのビットかわからないところを確認していません。

-eff

+0

この '-loadOurAnnotations'メソッドは、実際にはView Controllerの注釈配列を設定しません(またはこれらの注釈を追加します)。それが空の理由です。その配列に追加するか、マップビューから配列を取得する必要があります(下記の回答を参照)。 –

+0

ええ、アイデアは2つの異なるViewControllersに分割しようとしていることです - もっと多くのMapとさらにTable Viewを表示できるようにすることです。私は思った:-) –

答えて

2

注釈配列は空です(要素はゼロです)。

-loadOurAnnotationsメソッドを見ると、実際にはあなたが読んでいるannotationsアレイを設定しているようには見えません。この行を次のように更新し、それが役立つかどうか確認してください:

// I'm not sure where viewController comes from but I'll assume it's a method on this 
// class and that it's the same class that defines -loadOurAnnotations. If it's not, 
// update this appropriately to get access to the mapView to which you've added 
// the annotations 
cell.textLabel.text = [[[[viewController mapView] annotations] objectAtIndex:indexPath.row] title]; 
+0

同じファイル内の - (void)loadOurAnnotationsはcell.text .... と同じファイルで、テストのためにatmに2つの要素があります。 –

+0

@ jwk82質問を編集してそのメソッドの実装を追加できますか? –

+0

クール - アドバイスをいただきありがとうございました。それは実際には修正されませんでしたが、別の見方があります:-) –

関連する問題