Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 领域多对多查询(也反向!)_Ios_Swift_Nspredicate_Realm - Fatal编程技术网

Ios 领域多对多查询(也反向!)

Ios 领域多对多查询(也反向!),ios,swift,nspredicate,realm,Ios,Swift,Nspredicate,Realm,我的应用程序的db在提要对象和推特对象之间存在多对多关系。这是为了跟踪每条推文属于哪个提要。如果你熟悉Twitter,想象一下主提要、列表提要、用户配置文件提要等等 如何使用NSPredicate进行查询,以获取特定提要中存在的Tweet列表(反过来,获取Tweet中存在的提要的列表)?似乎反向关系查询在领域中不起作用,那么我的选择是什么?如果我正确理解了您的问题,这部分文档应该会有所帮助: 反向关系链接是单向的。因此,如果一个对许多 property Person.dogs链接到一个Dog实例

我的应用程序的db在
提要
对象和
推特
对象之间存在多对多关系。这是为了跟踪每条推文属于哪个提要。如果你熟悉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>()
}