如何解决点击不列表:“错误:每个布局项只能出现一次”
这是一个基于 coredata+cloudkit 的应用程序。仅当 icloud 用户第一次使用该应用程序时才会发生崩溃。用户创建了一本书,一个 BookView 并且只有一个 BookView 出现在 LazyVGrid 中,一切正常。然后当我点击书本视图时,崩溃为“错误:每个布局项可能只出现一次”。
我上网查了一下,大家都说只有在Grid中出现重复标识符时才会出现这个错误。 Book.id 是唯一的,我为 BookView 添加了 .id(book.id)。
如果重复的标识符出现网格时会发生崩溃,为什么我的代码在点击网格中的BookView时会崩溃?
此后,重新启动应用程序,点击BookView,就可以了。取出书,清除网格,创建一本新书,点击它,一切都很好。它仅在 icloud 用户第一次使用该应用程序时发生。我的 appid 已经用完了。
困惑,有什么建议吗?
这里有一些代码:
public class Book: NSManagedObject {
@NSManaged public var author: String?
@NSManaged public var cover: Data?
@NSManaged public var createAt: Date?
@NSManaged public var creatorName: String?
@NSManaged public var id: UUID?
@NSManaged public var name: String?
@NSManaged public var chapters: NSSet?
@NSManaged public var subscribes: NSSet?
}
@FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \Subscribe.lastAccessAt,ascending: false)],predicate: NSPredicate(format: "user.id = %@ AND isSubscribed = YES AND isHidden = NO",Manager.shared.myId ?? ""),animation: .default) private var subscribes: FetchedResults<Subscribe>
var books: [Book] { subscribes.compactMap { $0.book }.filter { $0.isDeleted == false } }
var booksView: some View {
LazyVGrid(columns: columns,spacing: 4) {
ForEach(books,id: \.id) { book in
BookView(book: book,extViewTypes: [.progress,.moreInfo],onMoreInfo: onMoreInfo)
.id(book.id)
.onTapGesture {
onBookTapped(book: book)
}
}
}.padding(4)
}
func onBookTapped(book: Book) {
Manager.shared.play(book: book)
}
func play() {
....
context.perform {
subscribe.lastAccessChapter = chapter
ckdbManager.save()
}
....
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。