我使用swift
在Realm database
中进行新闻申请。在我的数据库中有相同的新闻类别。如何从Realm database
获得独特价值?
我使用主键
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
}
但这不起作用。
答案 0 :(得分:7)
从Realm 3.10开始,现在可以
了添加Results.distinct(by :) / - [RLMResults distinctResultsUsingKeyPaths:],返回仅包含的结果 在给定的键路径上具有唯一值的对象。
尚无法从Realm查询中获取"独特的"类型的功能(跟踪未解决的问题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])
显然,解决方法并不像直接数据库查询那样高效,因此要谨慎使用(并在实际负载下进行测试)。