我为列表设置了交替颜色: .listRowBackground((self.restaurants.firstIndex(of: Restaurant)! % 2 == 0) ? Color.myLightGray: Color.white),但是当我删除一行时,程序崩溃并返回以下错误:致命错误:展开可选值时意外发现 nil
如果我删除代码中的 .listRowBackground 行,当我删除列表中的一行时,程序运行正常,但当然我不会得到交替的颜色。
我感谢解决此错误的任何帮助。
List {
ForEach(restaurants) { restaurant in
NavigationLink(value: restaurant) {
VStack {
HStack {
let uiimage = UIImage(data: restaurant.photo)
Image(uiImage: uiimage ?? UIImage(imageLiteralResourceName: "pepper"))
.resizable()
.aspectRatio(contentMode: .fill)
.frame(maxWidth: 40, maxHeight: .infinity)
.clipShape(Circle())
.padding(.init(top: 0, leading: 0, bottom: 0, trailing: 0))
Text(restaurant.location)
Spacer()
EmojiRatingView(rating: restaurant.mainGrade)
.font(.system(size: 12))
.foregroundColor(.red)
}
}.frame(height: 36)
}
.listRowBackground((self.restaurants.firstIndex(of: restaurant)! % 2 == 0) ? Color.myLightGray: Color.white)
}.onDelete(perform: deleteRestaurants)
}
func deleteRestaurants(at offsets: IndexSet) {
for offset in offsets {
let restaurant = restaurants[offset]
modelContext.delete(restaurant)
}
}
这是预期行为,您将被
(self.restaurants.firstIndex(of: restaurant)!
强制打开。如果它是 nil ,尝试提供一个默认值,而不是像这样强制它。
.listRowBackground(
(restaurant.firstIndex(of: restaurant) ?? 0) % 2 == 0 ? Color.black : Color.blue
)