gpt4 book ai didi

swift - 如何快速从 Realm 数据库中获取唯一值

转载 作者:搜寻专家 更新时间:2023-10-30 21:55:05 25 4
gpt4 key购买 nike

我使用 Realm 数据库swift 中做新闻应用。在我的数据库中有相同的新闻类别。如何从 Realm 数据库 中获取唯一值?我用主键

class News: Object {

dynamic var newsID: String = ""
dynamic var newsTitle: String = ""
dynamic var newsFullText: String = ""
dynamic var newsImage: String = ""
dynamic var newsAutor: String = ""
dynamic var newsCommentCount: String = ""
dynamic var newsSeenCount: String = ""
dynamic var newsDate: String = ""
dynamic var newsCategory: String = ""

override static func primaryKey() -> String? {
return "newsID"
}
}

我试着得到

let realm = try! Realm()
let menuName = realm.objects(News)
for i in menuName.filter("newsCategory") {
nameLabel.text = i.newsCategory
}

但这是行不通的。

最佳答案

从 Realm 3.10 开始,现在可以

Add Results.distinct(by:) / -[RLMResults distinctResultsUsingKeyPaths:], which return a Results containing only objects with unique values at the given key paths.

旧响应 - Realm 3.10 之前

还不可能从 Realm 查询中获得类似“独特”的功能(跟踪 Unresolved 问题 here)

但是,我在上面提到的线程中提出了一些解决方法(请阅读它以获取完整的上下文),用户 apocolipse :

// Query all users
let allUsers = Realm().objects(User)

// Map out the user types
let allTypes = map(allUsers) { $0.type }

// Fun part: start with empty array [], add in element to reduced array if its not already in, else add empty array
let distinctTypes = reduce(allTypes, []) { $0 + (!contains($0, $1) ? [$1] : [] )

或者更好的是,使用 Set 的不同方法(用户 jpsim):

let distinctTypes = Set(Realm().objects(User).valueForKey("type") as! [String])

显然,变通方法不如直接数据库查询有效,因此请谨慎使用(并在实际负载下进行测试)。

关于swift - 如何快速从 Realm 数据库中获取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40191265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com