Ios 领域多对多查询(也反向!)
我的应用程序的db在Ios 领域多对多查询(也反向!),ios,swift,nspredicate,realm,Ios,Swift,Nspredicate,Realm,我的应用程序的db在提要对象和推特对象之间存在多对多关系。这是为了跟踪每条推文属于哪个提要。如果你熟悉Twitter,想象一下主提要、列表提要、用户配置文件提要等等 如何使用NSPredicate进行查询,以获取特定提要中存在的Tweet列表(反过来,获取Tweet中存在的提要的列表)?似乎反向关系查询在领域中不起作用,那么我的选择是什么?如果我正确理解了您的问题,这部分文档应该会有所帮助: 反向关系链接是单向的。因此,如果一个对许多 property Person.dogs链接到一个Dog实例
提要
对象和推特
对象之间存在多对多关系。这是为了跟踪每条推文属于哪个提要。如果你熟悉Twitter,想象一下主提要、列表提要、用户配置文件提要等等
如何使用
NSPredicate
进行查询,以获取特定提要中存在的Tweet
列表(反过来,获取Tweet
中存在的提要的列表)?似乎反向关系查询在领域中不起作用,那么我的选择是什么?如果我正确理解了您的问题,这部分文档应该会有所帮助:
反向关系链接是单向的。因此,如果一个对许多
property Person.dogs链接到一个Dog实例和一个属性
Dog.owner链接到Person,这些链接独立于一个
另一个将Dog附加到Person实例的dogs属性,不会
自动将狗的所有者属性设置为此人。因为
手动同步关系对容易出错,而且非常复杂
和复制信息,领域公开一个API来检索反向链接
如下所述
使用反向关系,可以获得链接到对象的所有对象
通过特定属性指定对象。例如,打电话
对象()。Dog实例上的LinkingObject(U3;:forProperty:)将返回
链接到调用实例的指定类的所有对象
具有指定的属性
我想你可以这样做:
//assuming your Tweet object has a property like "let feeds = List<Feed>()"
someTweet.linkingObjects(Feed.self, forProperty: "feeds") //should return feeds your Tweet is in
//假设您的Tweet对象具有类似“let feeds=List()的属性”
someTweet.linkingObjects(Feed.self,forProperty:“Feed”)//应该返回Tweet所在的提要
但我还是不明白你的问题。在我看来,你的第一个要求是:
获取特定提要中存在的推文列表
应该有一个简单的解决方案,例如在提要对象中有一个属性,如:
let tweets = List<Tweet>()
let tweets=List()
我希望你能进一步澄清你的情况。我想知道是否有可能将模型简化一点,这样多对多就没有必要了
我对Twitter的理解是,tweet不属于任何feed。它们只是存在于平台上,被任意数量的提要引用,但实际上并不属于任何特定提要
因此,像这样的模型设置应该是合适的:
class Tweet : Object {
}
class Feed : Object {
let tweets = List<Tweet>()
}
虽然不建议这样做(因为它增加了额外的工作),但这并不是不允许的
祝你好运 当然可以,让我看看是否可以澄清。我知道如何建立关系(以及反向关系),但我无法使用NSPredicate
查询反向关系,例如“ANY feed==%@”,feed
,因此我正在寻找一种方法来执行类似的查询,返回相同的结果。我明白了,然后,如果Feed
对象没有主键,我建议您向它添加一个主键,并像这样使用:realm.objects(Tweet.filter(“anyfeeds.id=%@”,id)
class Tweet : Object {
let feeds = List<Feed>()
}
class Feed : Object {
let tweets = List<Tweet>()
}