核心数据关系:过滤和排序



在我的Coredata中,我有两个实体(个人资料,照片(。个人资料与照片具有tomany关系(照片(。

我能够访问照片:

// all
let photos = profile.photos?.allObjects
// sorted
let photos = profile.photos?.sortedArray(using: [NSSortDescriptor(key: "ordering", ascending: true)])
// filtered
let photos = profile.photos?.filtered(using: NSPredicate(format: "type = 'x'"))

是否有一种简单的方法可以使用该关系结合过滤和分类,或者我必须板条板 NSFetchRequest

根据我的理解,您的问题与核心数据无关,它与在同一数组上的排序和过滤有关,因此请尝试以下代码

let photos = profile.photos?.allObjects
let result = photos
                .filter { $0.type == "x" }
                .sort { $0.ordering < $1.ordering }

作为另一种方式,如果您不想添加显式过滤器和对结果数组进行排序,则可以创建一个提取请求,并使用排序描述符添加谓词,因此您将获得预期的结果。

<</p>

谢谢告诉我,这对我有用:

var photos = profile.photos?.sortedArray(using: [NSSortDescriptor(key: "ordering", ascending: true)]) as! [Photo] as NSArray
photos = photos.filtered(using: NSPredicate(format: "type = 'x'")) as NSArray

最新更新