前方一致するデータを抽出するためには、filterメソッドやfirst(where:)メソッドを使って、HogeDataのnameが対象の文字列と前方一致するものを取得できます。そして、最も長い前方一致のデータを見つけるためには、前方一致するデータの中で、nameの長さが一番長いものを選びます。
以下はその実装例です
struct HogeData {
let id: Int
let name: String
}
let hogeArray: [HogeData] = [
HogeData(id: 1, name: "あいうえお"),
HogeData(id: 2, name: "あいうえおかき"),
HogeData(id: 3, name: "あい"),
HogeData(id: 4, name: "かきくけこ"),
]
let targetString = "あいうえおかきくけこ"
// 前方一致を確認し、最も長い一致を見つける
if let longestMatch = hogeArray
.filter({ targetString.hasPrefix($0.name) }) // 前方一致するデータをフィルタリング
.max(by: { $0.name.count < $1.name.count }) { // 一番長い名前を探す
print("一番長く前方一致するデータ: \(longestMatch)")
} else {
print("前方一致するデータがありません")
}