SwiftUI TabView 在 add/delete CoreData 元素期间给出错误消息
SwiftUI TabView gives an error message during add/delete the element of CoreData
我目前正在尝试将 TabView 用于轮播视图 (PageTabViewStyle) 和 CoreData。
错误没有发生,当我按这样的顺序添加新页面时 age.name: 3, page.name: 4, page.name: 5
但是如果我在 first/middle 顺序中输入一个数字,如 page.name: 2
,就会出现错误
如果我输入 page.name: 6,则没有错误,Alphabet 也一样。
b c d e -> 放“f”没问题,放“a”就出错了。
关闭应用程序并打开应用程序后,我仍然看到更新的(页面 added/Page 已删除)ContentView。
我猜想,TabView排序有问题,于是我尝试对CoreData的列表进行排序,将LifeCycle改成SwiftUI,但是错误一再出现。
我也尝试过使用 Firebase,但同样的问题。
错误信息:
"libc++abi: terminating with uncaught exception of type NSException
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'attempt to delete item 1 from section 0 which only contains 1 items before the update'
terminating with uncaught exception of type NSException"
ContentVIew
TabView() {
ForEach(pages, id: \.self) { page in
SubPage(whichPage: page)
}
}
.tabViewStyle(PageTabViewStyle())
.indexViewStyle(PageIndexViewStyle(backgroundDisplayMode: .always))
添加页面
let page = Page(context: self.moc)
page.name = pageName
do {
print("page.name: \(page.name ?? "Unknown")")
try self.moc.save()
} catch {
print(error)
}
子页面
@FetchRequest(entity: Page.entity(),
sortDescriptors: [NSSortDescriptor(keyPath: \Page.name, ascending: true)]
) var pages: FetchedResults<Page>
var whichPage: FetchedResults<Page>.Element
使用 VStack 或 HStack 或 List 代替 TabView 工作正常,没有任何问题。
这个问题终于在Xcode13&iOS15基础上解决了!
完整代码
TabView {
ForEach(pages) { page in
SubPage(whichPage: page)
}
}
.tabViewStyle(PageTabViewStyle())
或
TabView {
ForEach(pages) { page in
SubPage(whichPage: page)
}
}
.tabViewStyle(.page)
我目前正在尝试将 TabView 用于轮播视图 (PageTabViewStyle) 和 CoreData。
错误没有发生,当我按这样的顺序添加新页面时 age.name: 3, page.name: 4, page.name: 5
但是如果我在 first/middle 顺序中输入一个数字,如 page.name: 2
,就会出现错误如果我输入 page.name: 6,则没有错误,Alphabet 也一样。 b c d e -> 放“f”没问题,放“a”就出错了。
关闭应用程序并打开应用程序后,我仍然看到更新的(页面 added/Page 已删除)ContentView。
我猜想,TabView排序有问题,于是我尝试对CoreData的列表进行排序,将LifeCycle改成SwiftUI,但是错误一再出现。 我也尝试过使用 Firebase,但同样的问题。
错误信息:
"libc++abi: terminating with uncaught exception of type NSException
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'attempt to delete item 1 from section 0 which only contains 1 items before the update'
terminating with uncaught exception of type NSException"
ContentVIew
TabView() {
ForEach(pages, id: \.self) { page in
SubPage(whichPage: page)
}
}
.tabViewStyle(PageTabViewStyle())
.indexViewStyle(PageIndexViewStyle(backgroundDisplayMode: .always))
添加页面
let page = Page(context: self.moc)
page.name = pageName
do {
print("page.name: \(page.name ?? "Unknown")")
try self.moc.save()
} catch {
print(error)
}
子页面
@FetchRequest(entity: Page.entity(),
sortDescriptors: [NSSortDescriptor(keyPath: \Page.name, ascending: true)]
) var pages: FetchedResults<Page>
var whichPage: FetchedResults<Page>.Element
使用 VStack 或 HStack 或 List 代替 TabView 工作正常,没有任何问题。
这个问题终于在Xcode13&iOS15基础上解决了!
完整代码
TabView {
ForEach(pages) { page in
SubPage(whichPage: page)
}
}
.tabViewStyle(PageTabViewStyle())
或
TabView {
ForEach(pages) { page in
SubPage(whichPage: page)
}
}
.tabViewStyle(.page)