有没有办法在 FetchRequest 和 SectionedFetchRequest 之间动态切换?
Is there a way to dynamically switch between FetchRequest and SectionedFetchRequest?
过去几天我一直在研究 CoreData,试图构建一个应用程序来查看购物花费。现在它仍然非常简单,每个商店只有一个数据模型。
我有一个显示所有这些的列表视图,并且我已经将排序集成到列表中,首先是通过围绕谓词的旧变通方法,但是我发现了今年 wwdc 的 this 视频,我基本上只是复制了。我真的对 SectionedFetchRequest 的分组功能着迷,我想集成它,同时保持原始的非分段列表。所以我想我会跳过我的列表中的 FetchRequest 并将结果传递给列表视图而不是 SortDescriptor
MainView{
ListView(descriptor: SortDescriptor)
}
ListView{
FetchRequest(sortDescriptors: descriptor)
}
更改为:
MainView{
ListView(FetchRequest(sortDescriptors: descriptor))
}
ListView{
FetchedResults
}
但这仍然让我无法只按一个按钮来打开或关闭切片。
我有点不知道如何从这里继续下去。我想到的第一个想法是围绕 ListView 处理创建一个包装器,FetchRequest 根据按钮切换状态发送到 ListView,如
MainView{
Wrapper(sortDescriptors, toggleState)
}
Wrapper{
ListView(FetchRequest(sortDescriptors: descriptor))
}
ListView{
FetchedResults
}
但我仍然会遇到我的 ListView 中需要 2 个变量的问题,一个用于普通变量,一个用于 sectionedFetchResults。
有人知道如何处理吗?
TLDR 我想在 FetchRequest 和 SectionedFetchRequest 之间动态切换
根据 documentation 你不能不分节 a SectionedFetchRequest
,因此你必须同时支持两者。因此,我会创建两个单独的子视图,并在父视图中显示它们,该父视图具有控制显示哪个子视图的逻辑。如果您支持 pre-iOS 15 OS's.
,您无论如何都需要这样做
MainView{
if sectioned
ListViewSectioned(sortDescriptors: descriptor, sectionID: sectionID)
} else {
ListView(sortDescriptors: descriptor)
}
}
ListView{
FetchRequest(sortDescriptors: descriptor)
}
ListViewSectioned{
SectionedFetchRequest(sectionIdentifier: sectionID, sortDescriptors: descriptor)
}
主视图不必再知道选择和设置不同的列表视图。我没有登记 OS,但你也需要它。
过去几天我一直在研究 CoreData,试图构建一个应用程序来查看购物花费。现在它仍然非常简单,每个商店只有一个数据模型。 我有一个显示所有这些的列表视图,并且我已经将排序集成到列表中,首先是通过围绕谓词的旧变通方法,但是我发现了今年 wwdc 的 this 视频,我基本上只是复制了。我真的对 SectionedFetchRequest 的分组功能着迷,我想集成它,同时保持原始的非分段列表。所以我想我会跳过我的列表中的 FetchRequest 并将结果传递给列表视图而不是 SortDescriptor
MainView{
ListView(descriptor: SortDescriptor)
}
ListView{
FetchRequest(sortDescriptors: descriptor)
}
更改为:
MainView{
ListView(FetchRequest(sortDescriptors: descriptor))
}
ListView{
FetchedResults
}
但这仍然让我无法只按一个按钮来打开或关闭切片。 我有点不知道如何从这里继续下去。我想到的第一个想法是围绕 ListView 处理创建一个包装器,FetchRequest 根据按钮切换状态发送到 ListView,如
MainView{
Wrapper(sortDescriptors, toggleState)
}
Wrapper{
ListView(FetchRequest(sortDescriptors: descriptor))
}
ListView{
FetchedResults
}
但我仍然会遇到我的 ListView 中需要 2 个变量的问题,一个用于普通变量,一个用于 sectionedFetchResults。 有人知道如何处理吗?
TLDR 我想在 FetchRequest 和 SectionedFetchRequest 之间动态切换
根据 documentation 你不能不分节 a SectionedFetchRequest
,因此你必须同时支持两者。因此,我会创建两个单独的子视图,并在父视图中显示它们,该父视图具有控制显示哪个子视图的逻辑。如果您支持 pre-iOS 15 OS's.
MainView{
if sectioned
ListViewSectioned(sortDescriptors: descriptor, sectionID: sectionID)
} else {
ListView(sortDescriptors: descriptor)
}
}
ListView{
FetchRequest(sortDescriptors: descriptor)
}
ListViewSectioned{
SectionedFetchRequest(sectionIdentifier: sectionID, sortDescriptors: descriptor)
}
主视图不必再知道选择和设置不同的列表视图。我没有登记 OS,但你也需要它。