arrays - swiftUI array.first(其中:不使用结构/类数组
问题描述
我正在尝试使用此代码在数组中查找字符串;
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 = []
}
}
先感谢您
解决方案
您必须在方法的闭包中检查相同的类型first(where:)
。这是修复。
var foundUser: String {
guard let findUser = userArray.first(where: { $0.name == item.name })?.name else { return "Not found" }
return findUser
}
推荐阅读
- javascript - EStyleSheet 媒体查询和窗口调整大小
- r - ggplot2 计算 x_intercept
- javascript - javascript 和 jquery 实验室
- html - Bootstrap div内的额外填充
- git - Github 仅克隆改进
- javascript - 为什么单击时我的灯箱图像未加载?
- libreoffice - LibreOffice 隐藏 #VALUE
- javascript - localStorage - 检索复选框值
- list - 列表 [index +1] 有效 [index - 1] 无效 (Flutter)
- python - 组织我正在提取并保存到 CSV 的数据