我正在嘗試制作一個小型社交媒體應用程式。朋友和朋友請求作為用戶存盤在不同的陣列中。但是,當我想回圈陣列時,它會顯示哪個用戶發送的請求首先起作用,但是當我接受用戶并且他從陣列中洗掉時,我收到此錯誤“執行緒 1:致命錯誤:索引超出范圍”我知道它是因為回圈想要回圈到一個不再存在的索引但是我該如何修復它?
struct FriendsView: View {
@EnvironmentObject var appUser: User
var body: some View {
List {
ForEach(0..<appUser.friendAnfrage.count) {
durchlauf in
SingleFriendView(user: appUser.friendAnfrage[durchlauf])
}
}
}
}
class User: ObservableObject{
@Published var username: String = ""
@Published var name: String = ""
var password: String = ""
@Published var email: String = ""
@Published var beschreibung: String = ""
@Published var profilBild: UIImage?
@Published var friends = [User]()
@Published var friendAnfrage = [User]()
@Published var anfrageGesendet = [User]()
@Published var feed = [SinglePostView]()
func addFriend(friend: User,appUser: User) {
friend.friendAnfrage.append(appUser)
appUser.anfrageGesendet.append(friend)
}
func newFriend(newFriend: User) {
friends.append(newFriend)
for i in 0..<friendAnfrage.count {
if friendAnfrage[i].username == newFriend.username {
friendAnfrage.remove(at: i)
}
}
}
func friendAnfrage(friend: User,appUser: User) {
appUser.friendAnfrage.append(friend)
}
func makePost(image: UIImage,appUser: User) {
feed.append(SinglePostView(bild: image, ersteller: appUser))
for i in 0..<friends.count {
friends[i].feed.append(SinglePostView(bild: image, ersteller: appUser))
}
}
}
uj5u.com熱心網友回復:
ForEach在 SwiftUI 中使用基于索引的方法是危險的。相反,讓您的模型可識別。
class User: ObservableObject, Identifiable {
var id = UUID()
//...
然后,改變你的回圈:
ForEach(appUser.friendAnfrage) { item in
SingleFriendView(user: item)
}
與這個確切的問題無關,但通常 SwiftUI 更好地使用structa 模型而不是class. 如果使用您當前的代碼更新了Userin ,因為它是一個嵌套的,您將不會自動更新。friendsObservableObjectView
uj5u.com熱心網友回復:
User應該是一個結構而ForEach不是傳統的回圈,它是一個必須提供可識別資料的視圖,例如
struct FriendsView: View {
@EnvironmentObject var model: Model
var body: some View {
List {
ForEach($model.users) { $user in
SingleFriendView(user: $user)
}
}
}
}
struct User: Identifiable{
let id = UUID()
var username: String = ""
var friends: [UUID] = []
}
class Model: ObservableObject {
@Published var users: [User] = []
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/436434.html
