【发布时间】:2015-05-28 18:41:11
【问题描述】:
我是 Swift 新手,我的问题还没有找到任何答案。
我有一个具有多个属性的核心数据实体。该应用程序应管理待办事项列表。其中一个属性是 Date 属性,当对象必须完成时,我会在其中存储时间戳。
我知道日期是按以下格式存储的:
2015-05-28 18:22:08 +0000
在视图控制器中,我需要根据到期日期和时间的日期值计算核心数据对象。
需要的部分是: - 今天截止日期的任务 - 明天截止的任务 - 截止日期在明天或更晚的任务 - 逾期的任务 - 没有日期的任务
我在哪里可以找到执行所需谓词的方法?
这是我当前的代码,其中我得到日期大于当前日期的对象数:
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 predicate = NSPredicate(format: "timeStamp > %@", date)
fetchRequest.predicate = predicate
let sectionSortDescriptor = NSSortDescriptor(key: "timeStamp", ascending: true)
let sortDescriptors = [sectionSortDescriptor]
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)
}
【问题讨论】:
-
你的意思是这样的:stackoverflow.com/questions/21222361/…,但是使用 Swift 吗?
-
@MartinR,感谢您的研究。我正在开发一个类似的应用程序,但使用的是 Swift。在这种情况下,我不是在谈论表格视图。我不知道使用日期组件而不是使用 NSDate 值来存储到期日期是否更容易,以便更轻松地创建谓词...
-
您谈到了“部分”,因此我假设您想在表格视图中显示数据。此外 NSFetchedResultsController 几乎只与表格视图一起使用。
-
@MartinR,再次感谢您。我谈到了“部分”,但我并不是指表格视图部分。视图控制器必须显示按钮,一个按钮旨在显示每种类型的对象数量(今天的任务、明天的任务等)。这就是为什么我需要每种类型的对象数量。
-
上面的代码是否按原样工作以获取具有 timeStamp > date 的对象,而您也只需要其他谓词?还是上面的代码不起作用?