Swift CoreData:使用 NSSortDescriptor 计算即将到来的生日排序
Posted
技术标签:
【中文标题】Swift CoreData:使用 NSSortDescriptor 计算即将到来的生日排序【英文标题】:Swift CoreData: sort by calculated upcoming birthday with NSSortDescriptor 【发布时间】:2020-12-10 09:00:42 【问题描述】:在我的 ios 14/Swift 5 应用程序中,我使用 CoreData 来存储 A Friend
实体来存储朋友姓名和生日。 upcoming birthday
返回根据好友生日计算的即将到来的生日。
extension Friend
@NSManaged public var birthday: Date
@NSManaged public var familyName: String?
@NSManaged public var givenName: String?
@NSManaged public var id: String?
public var upcomingBirthday: Date
nextBirthday(forBirthday: birthday)
我尝试在NSSortDescriptor
中使用“upcomingBirthday”,如下所示:
NSSortDescriptor(key: "upcomingBirthday", ascending: true)
但我收到错误“keypath 'upcomingBirthday' not found in entity”
是否有任何方法可以按即将到来的生日排序,即使它不是直接的 CoreDate 属性,还是我必须获取所有朋友并在获取后排序?
【问题讨论】:
【参考方案1】:您不能在 Core Data 实体的排序描述符中使用自定义属性作为键(路径)。
在NSDate
(不是Swift Date
)的扩展中声明upcoming
作为属性(无参数),然后使用键路径birthday.upcoming
【讨论】:
这行得通吗?我收到同样的错误“原因:'keypathbirthday.updacoming not found in entity Friend”,为什么?我还有一个问题***.com/questions/66730049/…,有什么建议吗?以上是关于Swift CoreData:使用 NSSortDescriptor 计算即将到来的生日排序的主要内容,如果未能解决你的问题,请参考以下文章
CoreData - 相当于使用带有示例的类别 - Swift
在 Swift 中使用 NSPredicate 对 CoreData 结果进行排序
Swift/IOS/CoreData:如何在自动生成的 CoreData 类中将 var 定义为枚举类型?
如何使用 Swift 删除 coredata 中的特定记录?