2017-11-16 8 views
0

特定の文字列のインデックスを取得するために名前の配列をループしています。私はその後、私のUIPickerのインデックスを上記の文字列に設定したいと思います。配列をループして項目のインデックスを取得する - 即時

は、私は次のコードでは、しかし、これはアプリが原因クラッシュしています

デバッグインデックスはもちろんの原因ので、私のUIPickerの範囲内にない指標6176573120の値を取得している
let index = self.nameArray.index(where: {$0 == assetArray[0].Owner }) 
     scroll_owners.selectRow(index ?? 0, inComponent: 0, animated: true) 

クラッシュ。

これはなぜ起こっているのでしょうか?提案の答えを使用して

は、次のエラーがスローされます。

unrecognized selector sent to instance 0x101134af0' 

assetArrayで一致[0]が通過されている名前の間違いがあります。一人で、次のコード行を実行しようと、もう少し調査を行う

は同じエラーを与える:

scroll_owners.selectRow(0, inComponent: 0, animated: true) 

これは私がデリゲートメソッドを欠けているということですか?

資産アレイと名配列:

var assetArray : [Asset] = [] 

var nameArray = [String]() 

EDIT:

func numberOfComponents(in pickerView: UIPickerView) -> Int { 
     return 1 
} 

    self.scroll_owners.delegate = self 
    self.scroll_owners.dataSource = self 

私はこの作業を別の方法を取得しようとしました - 私はこれは私はそれを行うの醜い方法です知っています

  var i : Int = 0 
     while (nameArray[i] != name) 
     { 
      print(nameArray[i]) 
      i=i+1 
     } 
     scroll_owners.selectRow(i, inComponent: 0, animated: true) 

このセクションのコードがクラッシュし、whileループが発生しましたインデックスが範囲外であるために決して入力されません - これはnameArrayで問題が発生する可能性がありますか?

+0

assetArrayクラスとnameArrayの宣言で質問を更新できますか? –

+0

また、どのセレクタが認識しないのですか? – Flexicoder

+0

[UIView numberOfComponentsInPickerView:]:インスタンスに送信された認識できないセレクタ0x154037720 – benjiiiii

答えて

0

私は少し異なる方法でこのエラー自分自身を解決するために管理しています。 nameArrayと私は、次のコードを配置したUIPickerを移入する私の機能で

   var i : Int = 0 
      while (self.nameArray[i] != name) 
      { 
       print(self.nameArray[i]) 
       i=i+1 
      } 
      self.scroll_owners.selectRow(i, inComponent: 0, animated: true) 

コードは、私がいた前nameArrayが移入され仕上げていなかったことに起因したクラッシュされた理由比較をしようとする。私はこれがこれを行うの受け入れられた迅速な方法ではないかもしれないが、それが動作することを知っています。

問題は、私が信じる別のスレッドで機能が実行されているために発生しました。

1

私はindex.PathがIndexPathを返さないという問題があると思います。 しかし、selectRowにはパラメータとしてindexPathが必要です。

.index .selectRow

関連する問題