我试图根据日期属性过滤核心数据对象.
这是我目前的代码:
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”属性上具有较旧或较新日期的对象?
谢谢.
解决方法
要获取满足某些条件的所有对象,您不需要
排序描述符但是谓词,例如:
排序描述符但是谓词,例如:
let predicate = NSPredicate(format: "timeStamp < %@",date) fetchRequest.predicate = predicate
您需要一个排序描述符来按指定的顺序获取对象,
例如:
let sectionSortDescriptor = NSSortDescriptor(key: "timeStamp",ascending: true) let sortDescriptors = [sectionSortDescriptor] fetchRequest.sortDescriptors = sortDescriptors