PollyVern
PollyVern

Reputation: 79

Primary Key for Realm BD Swift

I am trying to rename a value in a database by having a Primary Key:

var arrayKeys = ["608477babe8015e2e64eff96", "608488ac638dd4f4f24362de"]
for i in arrayKeys {
    realm.create(NameFolderClass.self, value: ["_id": i, "nameFolder": nameFolderField.text!], update: .modified)
self.tableView1.reloadData()
}

Error:

Thread 1: "Invalid value '608477babe8015e2e64eff96' of type 'Swift.__StringStorage' for 'object id' property 'NameFolderClass._id'."

When I put a separate key without a loop in "id_": "608477babe8015e2e64eff96" - does not work. And when I write in" id_": self. nameFolderClass[indexPath. row]. _id-then it works.

PrymaryKey have a type String

How can I iterate over the values if there can be more than two?

Upvotes: 0

Views: 86

Answers (1)

PollyVern
PollyVern

Reputation: 79

        let nameFolderField = alertController.textFields![0] as UITextField
        //Если nameFolderField больше 0, то записываем и обновляем Базу данных
        if nameFolderField.text!.count > 0 && nameFolderField.text != " " {
            //если в массиве уникальных папок нет вводимого текста:
            if self.uniqArrayNameFolder().contains(nameFolderField.text!) == false {
                let aaa = realm.objects(NameFolderClass.self).filter("nameFolder = 'дом'")
                //стараемся записать
                try! self.realm.write {
                    for n in aaa {
                        realm.create(NameFolderClass.self, value: ["_id": n._id, "nameFolder": nameFolderField.text!], update: .modified)
                        self.tableView1.reloadData()
                    }

I am did it!

Upvotes: 1

Related Questions