访问从 CoreData 获取的实体属性值
Accessing entity attribute values fetched from CoreData
我在尝试访问从 CoreData
获取的结果中的数据时遇到问题。
数据显示在 UITableView
中,显示效果很好,我正在尝试实现一个选项以根据属性过滤数据。这也适用于 NSCompoundPredicate
.
获取请求顺利进行,但是我在尝试从获取的实体的其中一个属性中提取值以将它们相加以显示总成本时遇到问题。
获取筛选结果的代码:
func attemptFilteredFetch(filter: Array<NSPredicate>)
{
let filterCriteria: NSCompoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: filter)
let fetchRequest: NSFetchRequest<StoredExpense> = StoredExpense.fetchRequest()
let dateSort = NSSortDescriptor(key: "dateOfExpense", ascending: false)
fetchRequest.sortDescriptors = [dateSort]
fetchRequest.predicate = filterCriteria
let controller = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
controller.delegate = self
self.controller = controller
do
{
try controller.performFetch()
}
catch
{
let error = error as NSError
print("\(error)")
}
expenseList.reloadData()
}
到目前为止,我已经尝试了我找到的方法 和网上找到的类似方法,但是当调用 attemptFilteredFetch()
函数时应用程序崩溃了。
我可能会以错误的方式解决这个问题,但我希望我可以将提取请求添加到一个数组中并遍历它以获得总值。
有没有更好的方法?或者有什么方法可以即时访问属性的值?
问题源于从旧版本 Xcode 继承的模型。 AFAIK 在 beta 版本中为了能够使用 CoreData NSManagedObject 子类必须手动创建。由于这在 Xcode 的最终版本中似乎是多余的,因此手动创建的模型会抛出随机错误。删除它并清理代码解决了我遇到的问题。
我在尝试访问从 CoreData
获取的结果中的数据时遇到问题。
数据显示在 UITableView
中,显示效果很好,我正在尝试实现一个选项以根据属性过滤数据。这也适用于 NSCompoundPredicate
.
获取请求顺利进行,但是我在尝试从获取的实体的其中一个属性中提取值以将它们相加以显示总成本时遇到问题。
获取筛选结果的代码:
func attemptFilteredFetch(filter: Array<NSPredicate>)
{
let filterCriteria: NSCompoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: filter)
let fetchRequest: NSFetchRequest<StoredExpense> = StoredExpense.fetchRequest()
let dateSort = NSSortDescriptor(key: "dateOfExpense", ascending: false)
fetchRequest.sortDescriptors = [dateSort]
fetchRequest.predicate = filterCriteria
let controller = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
controller.delegate = self
self.controller = controller
do
{
try controller.performFetch()
}
catch
{
let error = error as NSError
print("\(error)")
}
expenseList.reloadData()
}
到目前为止,我已经尝试了我找到的方法 attemptFilteredFetch()
函数时应用程序崩溃了。
我可能会以错误的方式解决这个问题,但我希望我可以将提取请求添加到一个数组中并遍历它以获得总值。
有没有更好的方法?或者有什么方法可以即时访问属性的值?
问题源于从旧版本 Xcode 继承的模型。 AFAIK 在 beta 版本中为了能够使用 CoreData NSManagedObject 子类必须手动创建。由于这在 Xcode 的最终版本中似乎是多余的,因此手动创建的模型会抛出随机错误。删除它并清理代码解决了我遇到的问题。