iOS 9 Realmswift查询问题

时间:2016-04-14 17:37:28

标签: swift2 ios9 realm

我正试图从Results<News>

的所有对象的领域中获取'mytag'个新闻对象

News对象看起来像

dynamic var id = 0
dynamic var title = ""
dynamic var date = NSDate()
dynamic var modified = NSDate()
dynamic var protected = true
dynamic var category : Category?
dynamic var image : Image?
let content = List<Content>()
let tags = List<Tag>()

我的所有代码都有Results<Tag>。标签有一个布尔my,看它是否属于我的标签。

这样我就可以得到个人新闻。

但是,我不明白如何查询。我对SQL有一些了解,但我似乎无法使用containsin

来解决这个问题。

我尝试了一种解决方法,但似乎Results没有append功能。

这是我目前的解决方法:

func retrieveMyNewsSortedByDate() -> Results<News> {
    let myTags = TagDataService().myTagsList() // retunrs a List<Tag>

    print("My news items");
    let items = database().objects(News).filter("tags IN %@", myTags).sorted("date") // how to query or query with news and tag table
    let myTagItems = List<News>()
    for tag in myTags {
        for news in items{
            for newsTag in news.tags {
                if newsTag == tag {
                    myTagItems.append(news) // Results does not have .append or .addobject
                }
            }
        }
    }
    mytagItems = Results(myTagItems)
    return myTagItems
}

但是,现在我的效率非常低,也输出了我似乎无法转换为Results的列表。我该怎么做?

1 个答案:

答案 0 :(得分:0)

好吧,最后很容易:D

 func retrieveMyNewsSortedByDate() -> Results<News> {
    let myTags = TagDataService().myTagsList()

    let items = database().objects(News).filter("ANY tags IN %@", myTags).sorted("date")
    return items
}