核心数据:在一系列“行”之前获取“行”

时间:2015-08-19 21:23:18

标签: ios uitableview core-data nsfetchedresultscontroller

我有一个NSFetchedResultsController,它为我提供了一个符合特定条件的'transaction'-esque对象的集合 - 例如,销售超过100美元。每个事务具有唯一的整数标识符,其对应于事务的相对时间(事务23在事务24之前出现)。我在UITableView控制器中显示结果没有问题。我想做的还是展示在每次销售超过100美元之前发生的交易,即:

交易 - $ 93(id = 1)

交易 - $ 101(id = 2)

交易 - $ 12(id = 13)

交易 - $ 243(id = 14) 等。

然后在TableView中显示此结果列表。超过100美元的两笔交易不可能相继发生,因此不必担心重复的条目。有没有办法做到这一点?我正在搜索如何在SQL中进行此操作以获取灵感,但是在给定的个别结果行之前,如何立即获取“行”的答案只有答案,而不是一组。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用两次抓取和一次排序操作(不能获取所有事务并在内存中过滤)。

首先获取100美元以上的所有交易。然后提取id并获取相应的先前事务。合并和排序。

// first fetch with this predicate
NSPredicate(format:"amount > 100")

// get all previous ids
let previousIDs = result.map { $0.id - 1 }

// fetch the other records with this predicate
NSPredicate(format:"id in %@", previousIDs)

// merge & sort
let finalResult = (result + result2).sort { $0.id < $1.id }