在 SwiftUI 中我们可以通过 @FetchRequest
的方式从 Core Data
获取保存的数据,但是默认的数据并不保证会被排序
@FetchRequest(sortDescriptors: []) private var records: FetchedResults<Records>
@FetchRequest(sortDescriptors: []) private var folders: FetchedResults<Folders>
所以最好的的方式,是我们指定一个默认的排序字段以及排序的方式。借由 SortDescriptor
我们可以实现这个目的
@FetchRequest(sortDescriptors: [SortDescriptor(\.createAt)]) private var records: FetchedResults<Records>
上面的代码则是根据 createAt
进行排序
/// - Parameters:
/// - keyPath: The key path to the field to use for the comparison.
/// - order: The initial order to use for comparison.
public init(_ keyPath: KeyPath<Compared, Date?>, order: SortOrder = .forward) where Compared : NSObject
通过源码不能注意到默认的排序是 .forward
除此之外还有 .reverse
/// The ordering where if compare(a, b) == .orderedAscending,
/// a is placed before b.
case forward
/// The ordering where if compare(a, b) == .orderedAscending,
/// a is placed after b.
case reverse
其中 forward
代表着升序排列,而 reverse
代表着降序排列
最后不难注意到 @FetchRequest(sortDescriptors: [])
其中 sortDescriptors
是个数组,也就意味着我们可以传入多个字段进行排序
@FetchRequest(sortDescriptors: [SortDescriptor(\.createAt),
SortDescriptor(\.id)])
private var records: FetchedResults<Records>
在 SwiftUI 中我们可以通过
@FetchRequest
的方式从Core Data
获取保存的数据,但是默认的数据并不保证会被排序所以最好的的方式,是我们指定一个默认的排序字段以及排序的方式。借由
SortDescriptor
我们可以实现这个目的上面的代码则是根据
createAt
进行排序通过源码不能注意到默认的排序是
.forward
除此之外还有.reverse
其中
forward
代表着升序排列,而reverse
代表着降序排列最后不难注意到
@FetchRequest(sortDescriptors: [])
其中sortDescriptors
是个数组,也就意味着我们可以传入多个字段进行排序