核心数据排序描述符与NSDate,iOS与Swift [英] Core Data sort descriptor with NSDate, iOS with Swift

查看:161
本文介绍了核心数据排序描述符与NSDate,iOS与Swift的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图根据日期属性过滤核心数据对象。

I am trying to filter core data objects depending on a date attribute.

这是我当前的代码:

func getFetchedResultController(selectedEntity: NSString){

    let appDelegate : AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let managedObjectContext: NSManagedObjectContext = appDelegate.managedObjectContext!

    let fetchRequest = NSFetchRequest()

    let entity = NSEntityDescription.entityForName(selectedEntity as String, inManagedObjectContext: managedObjectContext)

    fetchRequest.entity = entity

    fetchRequest.fetchBatchSize = 20

    let date = NSDate()

    let sectionSortDescriptor = NSSortDescriptor(key: "timeStamp < %@",date)

    let sortDescriptors = [sectionSortDescriptor] //, secondSortDescriptor]

    fetchRequest.sortDescriptors = sortDescriptors

    let aFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)

    aFetchedResultsController.delegate = self
    self.fetchedResultsController = aFetchedResultsController

    var error: NSError? = nil
    if !self.fetchedResultsController.performFetch(&error) {
        abort()
    }

 print(fetchedResultsController.fetchedObjects?.count ?? 0)
}

但我在行中遇到错误:

let sectionSortDescriptor = NSSortDescriptor(key: "timeStamp < %@",date)

如何更改此排序描述符以获取在timeStamp属性上具有较早或较新日期的对象?

How should I change this sort descriptor to get the objects that have an older or a newer date on the "timeStamp" attribute?

谢谢。

推荐答案

要获取满足某些条件的所有对象,您不需要
描述符而是一个谓词,例如:

To fetch all objects satisfying some condition you don't need a sort descriptor but a predicate, for example:

let predicate = NSPredicate(format: "timeStamp < %@", date)
fetchRequest.predicate = predicate

排序描述符以获得指定顺序中的对象
例如:

You need a sort descriptor to get the objects in a specified order, for example:

let sectionSortDescriptor = NSSortDescriptor(key: "timeStamp", ascending: true)
let sortDescriptors = [sectionSortDescriptor]
fetchRequest.sortDescriptors = sortDescriptors

这篇关于核心数据排序描述符与NSDate,iOS与Swift的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆