【发布时间】:2021-12-12 04:05:44
【问题描述】:
我有两个相同的方法,它们接收的参数不同。一个接收Array<Entity>,另一个接收FetchedResults<Entity> 对象,其中Entity 是CoreData 实体。通过删除重复并仅使用一种方法来简化代码会很好。
static func groupByDate(_ result : FetchedResults<Entity>)-> [[Entity]]{
return Dictionary(grouping: result){ $0.dateDescription }
.values
.map{$0}
.sorted(by: { $0.first!.timestamp! > $1.first!.timestamp! })
}
static func groupByDate(_ result : [Entity])-> [[Entity]]{
return Dictionary(grouping: result){ $0.dateDescription }
.values
.map{$0}
.sorted(by: { $0.first!.timestamp! > $1.first!.timestamp! })
}
我尝试use a sequence of the Entity type 来抽象该方法,因为Array<Entity> 和FetchedRusults<Entity> 都遵守协议。不幸的是,我无法让它工作。
我很好奇你会如何解决它。
【问题讨论】:
-
你可以只使用
groupByDate(_ result: [Entity])...,当你有FetchedResults<Entity>传递给它时,使用groupByDate(entities.map{$0})。 -
这是可能的,但它会不必要地遍历序列。我很好奇如何用泛型解决问题以避免问题。