【发布时间】:2020-07-23 16:33:46
【问题描述】:
我正在尝试使用此代码在数组中查找字符串;
var userArray = [UserItem]()
var foundUser: String {
guard let findUser = userArray.first(where: { $0 == item.name }) else { return "Not found" }
return findUser
}
但我收到以下错误消息; “无法将类型 '(String) -> Bool' 的值转换为预期的参数类型 '(UserList) throws -> Bool'”
所以我尝试添加一个标准数组;
var userArray = ["1", "Gale Dyer", "3", "4"]
并摆脱了我想要的错误和结果。
我认为这是因为我的结构或类不符合字符串,但我不确定如何解决这个问题,因为添加“,字符串”似乎不是答案。
其他数据供参考;
struct UserItem: Codable, Identifiable {
var id: String
var isActive: Bool
var name: String
var age: Int
var company: String
var email: String
var address: String
var about: String
// var registered: Date
var tags: [String]
var friends: [Friend]
}
struct Friend: Codable {
var id: String
var name: String
}
class UserList: ObservableObject {
@Published var items = [UserItem]()
{
didSet {
let encoder = JSONEncoder()
if let encoded = try? encoder.encode(items) {
UserDefaults.standard.set(encoded, forKey: "Items")
}
}
}
init() {
if let items = UserDefaults.standard.data(forKey: "Items") {
let decoder = JSONDecoder()
if let decoded = try? decoder.decode([UserItem].self, from: items) {
self.items = decoded
return
}
}
self.items = []
}
}
提前谢谢你
【问题讨论】:
标签: arrays class struct swiftui where-clause