假设我在 iCloud 中有以下模型:
___________ ___________
| Users |<-_ | Posts |
|-----------| | |-----------|
| firstName | | | text |
| lastName | --- | user |
----------- -----------
我需要获取特定 user
引用的最新 Posts
。
目前我正在使用这样的谓词:
let userRefs: [CKReference] = [...]
let predicate = NSPredicate(format: "%K IN %@ AND creationDate >= %@", "user", userRefs, NSDate.twentyFourHoursAgo)
let query = CKQuery(recordType: "osts", predicate: predicate)
query.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
但它为我提供了过去 24 小时内的所有用户 Posts
。有没有办法为每个提供的用户引用仅获取一个最新的帖子?
期望的结果是特定用户(例如 [user1, user2, user3])的最新 Posts
数组:
[
Post<text, user1>
Post<text, user2>
Post<text, user3>
]
如果您想检索除默认记录之外的其他记录数(通常最多 100 条),请使用 CKQueryOperation 并设置 .resultsLimit
在您的情况下,您可以在仅为 1 个用户执行查询时将其设置为 1。
使用 CloudKit 无法执行您实际想要执行的查询,因为您需要某种聚合查询。不支持聚合查询。因此,解决此问题的唯一方法是为每个用户执行查询以获取其最新帖子。
但是,有一个可行的解决方法。我以前做过类似的事情。当用户添加新帖子时,您还可以更新用户数据并将最新帖子添加到用户 recrodType。你会有一些重复的数据,但你可以通过查询用户来获得所有最新的帖子。
关于ios - 如何使用 NSPredicate 和 CloudKit 获取特定用户的最新帖子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31109534/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |