问题描述
我正在编写一个App,该App从Excel文档中获取信息并将数据保存在Realm中。我的问题是,每次打开应用程序时,领域数据库都会保存信息的副本。现在,我得到的TableView具有3倍相同的项目。
这是我的主视图控制器中的代码:
class ViewController: UIViewController {
let realm = try! Realm()
var importExcel = Import()
var xslxConvert = xslxConverter()
var currentString: [String] = []
var Name = ""
@IBOutlet weak var VRLabel: UIButton!
@IBOutlet weak var configurationLabel: UIButton!
@IBOutlet weak var Label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
currentString = importExcel.Results()
Label.text = Name
dispatchQueue.main.async {
self.saveData()
print("Data from Excel saved")
}
}
//MARK: - SaveData to the Realm
func saveData() {
do {
try realm.write {
for item in currentString {
let newItem = FunctionData()
newItem.functionName = item
realm.add(newItem)
}
}
} catch {
print ("Error trying to Realm data,\(error)")
}
}
}
我该如何过滤某些内容,以使该应用程序仅保存Excel中的信息? 非常感谢您的帮助!
解决方法
好吧,我认为它不能与UUID()一起使用,因为它会一直存在差异。
let filter = // choose what you need
if let items = Array(realm.objects(FunctionData.self).filter("parameterName == %@",filter)) {
// Do not save
} else {
// Save
}
并尝试使用realm.add(newItem,update: .modified)
保存