Zha*_*rik 7 unique realm swift
我在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"
}
}
Run Code Online (Sandbox Code Playgroud)
我试着去
let realm = try! Realm()
let menuName = realm.objects(News)
for i in menuName.filter("newsCategory") {
nameLabel.text = i.newsCategory
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
从Realm 3.10开始,现在可以
添加Results.distinct(by :)/ - [RLMResults distinctResultsUsingKeyPaths:],返回一个结果,该结果仅包含给定键路径上具有唯一值的对象.
现在还不可能从Realm查询中获得"独特"的功能(跟踪这里的开放问题)
但是,我在上面提到的主题中提出了一些解决方法(请阅读它以获取完整的上下文),由用户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] : [] )
Run Code Online (Sandbox Code Playgroud)
或者更好的是,使用Sets(按用户jpsim)的不同方法:
let distinctTypes = Set(Realm().objects(User).valueForKey("type") as! [String])
Run Code Online (Sandbox Code Playgroud)
显然,变通方法不如直接数据库查询有效,因此请谨慎使用(并在实际负载下进行测试).