私のアプリの検索機能を構築しています。でユーザーを検索しましょう。各ユーザーには、の名前、電子メール、およびIDの3つのフィールドがあります。私は、次のタスクを実行するより効率的な方法があるかどうかを調べようとしています。名前または電子メールを入力するとき、データが存在すると仮定して、他の2つのフィールドを取得する必要があります。3値以上で検索
は、今私は3つの2D配列に、データベースから取得していますすべてのユーザーのデータを整理しています:
var emailByName = [[String]]() // ex: ["John Doe", "[email protected]"]
var nameByEmail = [[String]]() // ex: ["[email protected]", "John Doe"]
var IdByEmail = [[String]]() // ex: ["[email protected]", "123456789"]
注意が同じ名前であってもよいが、メールとIDのは別個のものであることができます。
あなたが「[email protected]」を入力すると、最初のアプリは、IDを取得するために、その後IdByEmail
で、人の名前を取得するためにnameByEmail
に見えます。一方、名前を入力すると、emailByName
配列が検索され、その結果がIdByEmail
配列を検索するために使用されます。
私は3つの異なる配列を使用することは非常に効率的ではないという感覚があります。この三角検索を実現するためのよりよい方法はありますか?
ありがとう、私は今述語を研究しています。 '.filter()'関数を使うべきだと思いますか? – MarksCode
Filterもうまくいきます.Predicatesの利点は、配列やデータベース(CoreDataを使用することを前提としています)と同じアプローチであることです。また、私は非常に簡単な実装のためにほとんどの場合、フィルターを使用する傾向があります。両方のアプローチを処理するのはかなり簡単ですか?私は機能的なアプローチをかなりの量使っているが、多くの場合それが迷惑であることを認めた。 – Rob