2017-06-18 13 views
1

searchbarを実行して実行するこのチュートリアルに従っていました。検索範囲から索引が外れています

チュートリアル: https://www.raywenderlich.com/113772/uisearchcontroller-tutorial

は私が書かれたとおりにすべてのステップを追ったが、私は自分の携帯電話上でアプリケーションを実行すると、致命的なエラー」と呼ばれるエラーの中に私が実行何かを検索を開始するために検索バーを押します。外のインデックス範囲"。これは、それが

return self.locations.count 

に達したときにそれがときであることを示して、私はこのエラーの原因を確認するためにブレークポイントを設定するときにエラー

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

    if searchController.isActive && searchController.searchBar.text != "" { 
     return users.count 
    }else{ 
     return self.locations.count 
    } 
} 

を引き起こしているコード全体でのコードですエラーが発生します。それは

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! PostCell 
    cell.backgroundColor = UIColor.clear 
    let postInformation = users[indexPath.row] 
    cell.userNameTextField.text = postInformation.user 
    cell.userDescription.text = postInformation.text 

    cell.postImage.loadImageUsingCachWithUrlString(urlString: postInformation.image!) 
    cell.cellLocationX = cell.postImage.frame.origin.x //cell.frame.origin.x 
    cell.cellLocationY = cell.postImage.frame.origin.y //cell.frame.origin.y 
    return cell 
} 

var users = [MapPoints]() 
var locations = [MapPoints]() 
+0

'collectionView(_:cellForItemAt:)'メソッドのコードは何ですか? 'users'と' self.locations'はどのように定義されていますか? –

+0

@MatusalemMarques私はコード – Otheprogrammer

答えて

1

あなたcollectionView(_:cellForItemAt:)は常にusers配列からアイテムを返しているのに役立ちます場合、私は私のコードの多くを投稿することができます。 locationsusersより多くの要素がある場合、users配列の無効なインデックスにアクセスしようとします。

collectionView(_:cellForItemAt:)およびcollectionView(_:numberOfItemsInSection:)は、同じアレイから読み込んでコレクションビューを作成する必要があります。

前述のチュートリアルで対応するtableView(_:cellForRowAtIndexPath:)をご覧ください。

+0

と非常に恥ずかしい監視で質問を更新しました、私は助けてくれてありがとう! – Otheprogrammer

関連する問題