2017-06-13 17 views
0

私はスウィフトに新しいですし、私は比較のために2次元配列を使用していますが、私は条件が真であるが、私はエラー状態を得た後、行インデックスを取得する必要があり、そのcannot invoke index with an argument list of type (of:Array<Float>)2D配列の行インデックスを取得する方法は?

マイコード:

var entryCoordinate: [[Float]] = [[130.6,61.0],[167.5,61.0],[204.5,61.0],[243.6,61.0],[281.16,61.0],[315.3,61.0]] 

for indexs in entryCoordinate 
     { 
      if indexs[0] == startPathPointX && indexs[1] == startPathPointY 
      { 
       let pathStartElement = indexs.index(of: indexs) 
       print(pathStartElement) 
      } 

      if indexs[0] == endPathPointX && indexs[1] == endPathPointY 
      { 
       let pathEndElement = indexs.index(of: indexs) 
       print(pathEndElement) 
      } 
     } 
+0

(の:indexs) 'indexs.index:いいえ、' 'あなたは(indexsの)' entryCoordinate.indexを意味?そうでなければ、値が重複していれば、最初に見つかった要素のみが返されます。また 'if indexs [0] == startPathPointX && indexs [1] == startPathPointY'、いいえ? – Larme

+0

yupが見つかった場合entryCoordinateの行インデックスを取得したいのですが、それはどの行が値があるかを取得するのと同じですentryCoordinate.enumerated(){(aCoordindate [0] == startXの場合)の(index、aCoordindate)の場合は –

+0

' && aCoordindate [1] == startY {print( "CoordinateFound:\(aCoordindate)"); print( "Index:\(index)")}} '代わりに?そこからインデックスを取得したForループ:https://stackoverflow.com/questions/24028421/swift-for-loop-for-index-element-in-array – Larme

答えて

0

startPathPointYendPathPointYのコードでは、2番目のオブジェクトを2次元配列と比較する必要がありますが、最初のものと比較する場合はindex(where:)を配列に使用してpathStartElementpathEndElementを得ます。

if let pathStartElement = entryCoordinate.index(where: { $0[0] == startPathPointX && $0[1] == startPathPointY }) { 
    print(pathStartElement) 
} 
if let pathEndElement = entryCoordinate.index(where: { $0[0] == endPathPointX && $0[1] == endPathPointY }) { 
    print(pathEndElement) 
} 
0

このコードを試してみてください。

let myIndexPathStartElement = self.arrImagetData.index(where: { $0[0] == startPathPointX && $0[1] == startPathPointY }) 

let myIndexPathEndElement = self.arrImagetData.index(where: { $0[0] == endPathPointX && $0[1] == endPathPointY }) 
関連する問題