2017-10-15 4 views
0

jsonserializationメソッドを使用してurlからデータを取得し、各レコードをクラスのオブジェクトに格納し、各レコードをテーブルvcに表示します。テーブルビューコントローラの特定のレコードを検索するiOS swift

検索バーを使用して検索を実装し、文字列型の配列と文字列型の別の配列(配列のハードコードされた値)の比較を行ったチュートリアルを多数見たいと思います。 しかし、私の必要に応じて、私のデータは、クラスobjにはハードコードされていないデータに格納され、そのオブジェクトからのデータはcellforrowに表示されます。 cellforrowが含まれます。

if isSearching 
{ 
    cell.textLabel?.text = searchArray[indexPath.row] //.compName 

    cell.detailTextLabel?.text = searchArray[indexPath.row] 
} 
else{ 
    cell.textLabel?.text = tempArray[indexPath.row].compName 

    cell.detailTextLabel?.text = tempArray[indexPath.row].complocation 
} 
return cell 

このように、検索バーを実装すると、次のエラーが発生します。 親切に助けてください! ここに私のクラス名は - > compです。次に、あなたはちょうどあなたがする使用する検索フィルタを変更する必要がOBJ

Image of the error

+0

あなたのタイプが「comp」であることをお知らせください。だからクラス定義か 'comp'のものを追加してください – Ladislav

+0

Hello @Ladislav compは私のクラス名です。クラスcomp { var compName:String! } – Aj1591

答えて

0

見つけました。ここでは、次の あるのは、他の状態の変化

ここ
searchArr = tempArray.filter { $0.<classAttribute>.contains(searchText) } 

searchArray = searchArr as! [comp] 

print("search match") 

listTableView.reloadData() 

でsearchArrとsearchArrayとtempArrayは、クラス型の配列、& classAttributeは、あなたがテーブルビューで検索するそのクラスの属性であるが、私のクラス名は " comp "

0

とsearchArrayは、文字列の配列であると tempArrayは、クラスを含む配列である:

コンパイラことを言っていた
searchArray = tempArray.filter({$0.compName == searchBarClicked.text!}) 

タイプcomp$0Stringと比較することはできませんので、$0.compNameStringとなるため、==を使用することができます

+0

私は試してみましたが、他のエラーが.filterで生成されました - >型 '[string]'に '[comp]'型の値を代入できません... – Aj1591

+0

上記の 'comp'クラスをあなたの質問に追加してくださいどのようなデータが 'tempArray'に入っているかの例 – Ladislav

+0

質問を編集してそこに追加するだけです – Ladislav

関連する問題