只添加当前不存在的对象到 Realm 数据库
Add only objects that don't currently exist to Realm database
我有一个主题领域数据库:
import Foundation
import RealmSwift
class Subjects: Object {
dynamic var subject = ""
override static func primaryKey() -> String? {
return "subject"
}
}
在数据库中我有四个科目,比方说,计算机101、英语、历史和地理。现在,我有一个可以容纳主题数组的结构,如下所示:
struct mySubjects {
static var subjects:Array<String> = [String]()
}
用户可以向结构中添加科目,例如,计算 101、英语、历史、地理和工程师会计。
我的问题是我只想添加数据库中不存在的一个主题,即 "Accountancy for Engineers"。我以为我可以像这样简单地编写一个 NSPredicate:
for subject in mySubjects.subjects {
let myPredicate:NSPredicate = NSPredicate(format: "subject != '\(subject)'")
results = realm.objects(Subjects).filter(myPredicate)
运气不好 :(。有什么建议吗?
因为您已经设置了主键,所以您可以使用 objectForPrimaryKey(_:key:)
函数。
如果 realm.objectForPrimaryKey(Subject.self, "Subject Name")
之类的结果为 nil,则该主题在数据库中尚不存在。
我有一个主题领域数据库:
import Foundation
import RealmSwift
class Subjects: Object {
dynamic var subject = ""
override static func primaryKey() -> String? {
return "subject"
}
}
在数据库中我有四个科目,比方说,计算机101、英语、历史和地理。现在,我有一个可以容纳主题数组的结构,如下所示:
struct mySubjects {
static var subjects:Array<String> = [String]()
}
用户可以向结构中添加科目,例如,计算 101、英语、历史、地理和工程师会计。
我的问题是我只想添加数据库中不存在的一个主题,即 "Accountancy for Engineers"。我以为我可以像这样简单地编写一个 NSPredicate:
for subject in mySubjects.subjects {
let myPredicate:NSPredicate = NSPredicate(format: "subject != '\(subject)'")
results = realm.objects(Subjects).filter(myPredicate)
运气不好 :(。有什么建议吗?
因为您已经设置了主键,所以您可以使用 objectForPrimaryKey(_:key:)
函数。
如果 realm.objectForPrimaryKey(Subject.self, "Subject Name")
之类的结果为 nil,则该主题在数据库中尚不存在。