问题描述
下面是我的数据结构。我正在尝试创建一个循环,以检查员工是否可以执行某些服务,但是我无法使employee.services正常工作。 JSON数据已加载到EmployeesData中。我在想我需要从EmployeesData获取索引,但是我似乎无法使用ForEach做到这一点?
ForEach(EmployeesData){ employee in
//This does not work
if(employee.services[0] == "service")
}
struct Employees: Codable,Identifiable{
var id: UUID
var firstname: String
var lastname: String
var services: [String]
var workingStatus: String
}
//Store employee data in EmployeesData
let EmployeesData: [Employees] = load("Employees.json")
private func load<T: Decodable>(_ filename: String) -> T {
let data: Data
guard let file = Bundle.main.url(forResource: filename,withExtension: nil)
else {
fatalError("Couldn't find \(filename) in main bundle.")
}
do {
data = try Data(contentsOf: file)
} catch {
fatalError("Couldn't load \(filename) from main bundle:\n\(error)")
}
do {
let decoder = JSONDecoder()
return try decoder.decode(T.self,from: data)
} catch {
fatalError("Couldn't parse \(filename) as \(T.self):\n\(error)")
}
}
解决方法
if let index = employee.services.firstIndex(where: {$0 == "service"})